【问题标题】:Serverless framework deploy does not install node dependancies无服务器框架部署不安装节点依赖项
【发布时间】:2021-08-23 08:27:37
【问题描述】:

我有一个从无服务器示例中获得的非常简单的节点应用程序:https://github.com/serverless/examples/tree/master/aws-node-express-api。我部署了:

serverless deploy

serverless.yml 是:

service: aws-node-express-api

frameworkVersion: '2'


provider:
  name: aws
  runtime: nodejs12.x
  lambdaHashingVersion: '20201221'

functions:
  api:
    handler: handler.handler
    events:
      - http:
          path: /
          method: ANY
      - http:
          path: /{proxy+}
          method: ANY

handler.js 是:

const serverless = require("serverless-http");
const express = require("express");
const app = express();

app.get("/", (req, res, next) => {
  return res.status(200).json({
    message: "Hello from root!",
  });
});

app.get("/hello", (req, res, next) => {
  return res.status(200).json({
    message: "Hello from path!",
  });
});

app.use((req, res, next) => {
  return res.status(404).json({
    error: "Not Found",
  });
});

module.exports.handler = serverless(app);

package.json 是:

{
  "name": "aws-node-express-api",
  "version": "1.0.0",
  "description": "",
  "dependencies": {
    "express": "^4.17.1",
    "serverless-http": "^2.7.0"
  }
}

当我运行 CURL 时,我得到:

{"message": "Internal server error"}

当我检查我看到的日志时:

{
    "errorType": "Runtime.ImportModuleError",
    "errorMessage": "Error: Cannot find module 'serverless-http'\nRequire stack:\n- /var/task/handler.js\n- /var/runtime/UserFunction.js\n- /var/runtime/index.js",
    "stack": [
        "Runtime.ImportModuleError: Error: Cannot find module 'serverless-http'",
        "Require stack:",
        "- /var/task/handler.js",
        "- /var/runtime/UserFunction.js",
        "- /var/runtime/index.js",
        "    at _loadUserApp (/var/runtime/UserFunction.js:100:13)",
        "    at Object.module.exports.load (/var/runtime/UserFunction.js:140:17)",
        "    at Object.<anonymous> (/var/runtime/index.js:43:30)",
        "    at Module._compile (internal/modules/cjs/loader.js:999:30)",
        "    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)",
        "    at Module.load (internal/modules/cjs/loader.js:863:32)",
        "    at Function.Module._load (internal/modules/cjs/loader.js:708:14)",
        "    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:60:12)",
        "    at internal/main/run_main_module.js:17:47"
    ]
}

我去了 AWS 上的 Lambda 函数,我看到了:

所以你可以看到没有 node_modules 文件夹。我不想推高 node_modules 文件夹,我希望自动安装依赖项(我很确定这发生在我上次创建无服务器节点函数之前)。但它没有安装。如何确保安装依赖项?

【问题讨论】:

    标签: javascript node.js amazon-web-services serverless-framework aws-serverless


    【解决方案1】:

    npm install 不会随无服务器框架自动运行。

    AWS 提供了一个最小的节点环境,但唯一的 aws-sdk 是included

    您需要在部署之前运行npm install

    【讨论】:

      猜你喜欢
      • 2021-06-05
      • 2021-02-27
      • 2019-06-29
      • 1970-01-01
      • 1970-01-01
      • 2021-07-30
      • 2013-03-06
      • 2015-10-27
      • 1970-01-01
      相关资源
      最近更新 更多