使用 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
    

    確認 package.json 檔案的 dependencies 欄位中顯示 Express。範例如下:

    {
      ...
      "dependencies": {
        "express": "^4.16.3"
      }
      ...
    }
    
  4. package.json 檔案中新增 start 指令碼:

    "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}...`);
    });

這是非常基本的網路伺服器,會回應對根路徑 ('/') 的所有 GET 要求,並顯示文字「Hello from App Engine!」請注意最後四行,伺服器已設為監聽 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