【问题标题】:AWS Elastic Beanstalk - cannot find module "hapi"AWS Elastic Beanstalk - 找不到模块“hapi”
【发布时间】:2020-03-14 11:51:52
【问题描述】:

我有一个想要在 Elastic Beanstalk 上托管的 NodeJs 应用程序。我复制了示例应用程序的结构,但我的服务器上的健康状况为严重,日志告诉我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 尝试安装软件包时它会失败,但我不确定为什么。

【问题讨论】:

    标签: node.js amazon-web-services amazon-elastic-beanstalk hapijs


    【解决方案1】:

    您似乎已将大部分依赖项保存为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

    【讨论】:

    • 看起来,默认情况下,Elastic Beanstalk 运行 npm install --production。如果要安装devDependencies,可以将NPM_USE_PRODUCTION环境变量设置为falseSource
    猜你喜欢
    • 2016-10-28
    • 2013-08-16
    • 2018-06-18
    • 2013-08-24
    • 1970-01-01
    • 2017-02-24
    • 2021-03-29
    • 2020-08-05
    • 2015-01-04
    相关资源
    最近更新 更多