使用 Node.js 编写网络服务

本指南介绍如何编写要在 App Engine 标准环境中运行的 Node.js 网络服务。如需详细了解 Node.js 运行时及其工作原理,请参阅 Node.js 运行时环境

准备工作

要点

  • 您可以在 package.json 文件中列出要使用的依赖项。如需了解详情,请参阅指定依赖项
  • App Engine 通过运行 npm start 来启动您的应用。
  • 您的服务器必须侦听 process.env.PORT 指定的端口,此参数是 App Engine 运行时设置的环境变量
  • 您需要使用 app.yaml 文件将服务部署到 App Engine。

创建服务器以侦听 HTTP 请求

网络服务的核心是 HTTP 服务器。本指南中的示例代码使用 Express.js 框架来处理 HTTP 请求,您也可以自由使用自己偏好的网络框架。

  1. 为您的 Node.js 服务创建名为 my-nodejs-service 的新文件夹。

  2. 在您的终端中导航到该文件夹,然后通过运行 npm init 创建 package.json 文件。

  3. 通过运行以下命令将 Express 添加为依赖项:

    npm install express
    

    确认 Express 出现在 package.json 文件的 dependencies 字段中。示例如下:

    {
      ...
      "dependencies": {
        "express": "^4.16.3"
      }
      ...
    }
    
  4. start 脚本添加到您的 package.json 文件中:

    "scripts": {
      "start": "node server.js"
    }
    
  5. 在同一文件夹中创建名为 server.js 的文件,然后添加以下代码:

    const express = require('express');
    const app = express();
    
    app.get('/', (req, res) => {
      res.send('Hello from App Engine!');
    });
    
    // Listen to the App Engine-specified port, or 8080 otherwise
    const PORT = process.env.PORT || 8080;
    app.listen(PORT, () => {
      console.log(`Server listening on port ${PORT}...`);
    });

这是一个非常基本的网络服务器,它以文本“Hello from App Engine!”响应对根路径 ('/') 的所有 GET 请求。请注意最后四行,其中服务器设置为侦听由 process.env.PORT 指定的端口,此参数是 App Engine 运行时设置的环境变量。如果您的服务器未设置为侦听此端口,则它不会收到请求。

请注意,如果未设置 process.env.PORT,则默认使用端口 8080。这是本地测试应用时的必要步骤,因为本地运行期间无法设置 process.env.PORT,只有当您的应用正在 App Engine 上运行时才可以设置此参数。您可以使用您偏好的任何端口进行测试,本指南中使用的是 8080

在本地运行服务器

要在本地运行服务器,请执行以下操作:

  1. 在您的终端中运行 npm start。这将运行您的 server.js 文件。

  2. 将网络浏览器指向 http://localhost:8080

您将会看到显示文本“Hello from App Engine!”的页面

创建 app.yaml 文件

app.yaml 文件用于指定 App Engine 服务的运行时环境的设置。如果没有此文件,您的服务将无法部署。

  1. 在您的 my-nodejs-service 文件夹中,创建一个名为 app.yaml 的文件。

  2. 添加以下内容:

    runtime: nodejs20

    这是一个最低配置文件,向 App Engine 指示 Node.js 运行时的版本。app.yaml 文件还可以指定网络设置、扩缩设置等。如需了解详情,请参阅 app.yaml 参考文档

此时的文件结构应如下所示:

  my-nodejs-service/
  app.yaml
  package.json
  server.js

后续步骤

现在您已创建了一个简单的 Node.js 网络服务器来侦听正确的端口,并且已在 app.yaml 文件中指定了运行时,接下来便可以在 App Engine 上部署您的服务

自行试用

如果您是 Google Cloud 新手,请创建一个账号来评估 App Engine 在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。

免费试用 App Engine