问题描述
我有一个非常简单的节点应用程序,它是从无服务器示例中获得的: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",next) => {
return res.status(200).json({
message: "Hello from path!",});
});
app.use((req,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 文件夹,我希望这些依赖项能够自动安装(我很确定这发生在我上次创建无服务器节点功能之前)。但它没有被安装。如何确保安装依赖项?