【发布时间】: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