AWS Elastic Beanstalk - 找不到模块 "hapi"

AWS Elastic Beanstalk - cannot find module "hapi"

我有一个试图在 Elastic Beanstalk 上托管的 NodeJs 应用程序。我复制了示例应用程序的结构,但我的服务器上的运行状况为 Severe,并且日志告诉我 cannot find module 'hapi'.

我采取的步骤很简单。我的根文件夹的内容是...

|__ package-lock.json
|__ package.json
|__ server.js
|__ src (directory)

我的package.json的内容是...

{
  "name": "server",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start": "node server.js"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "axios": "^0.18.1",
    "boom": "^7.2.0",
    "dotenv": "^6.1.0",
    "glob": "^7.1.3",
    "hapi": "^17.6.0",
    "mongoose": "^5.7.11",
    "path": "^0.12.7",
    "querystring": "^0.2.0",
    "socket.io": "^2.1.1"
  }
}

接下来我要做的是将内容压缩成一个 zip 文件。我在 Elastic Beanstalk 上上传并部署了 zip 文件,之后,我收到了上面列出的错误消息。

知道我可能做错了什么吗?当我在本地 运行 npm install 时,一切看起来都应该 运行。我假设当 EB 尝试安装软件包时它失败了,但我不确定为什么。

您似乎已将大部分依赖项保存为 devDependencies,这意味着它们在 运行 生产时间不可用。 devDependencies是开发时需要的模块,运行时需要依赖。

当您 运行 npm install package --save-dev 而不是 npm install package --save

时,就会发生这种情况

很确定您需要其中的大部分依赖项:

"dependencies": {
    "axios": "^0.18.1",
    "boom": "^7.2.0",
    "glob": "^7.1.3",
    "hapi": "^17.6.0",
    "mongoose": "^5.7.11",
    "path": "^0.12.7",
    "querystring": "^0.2.0",
    "socket.io": "^2.1.1"
  }

并且只有本地开发环境所需的模块位于:

"devDependencies": {
   "dotenv": "^6.1.0",
  }

快速回顾一下您在 运行 生产期间的实际需求并更新您的 dependencies