【问题标题】:nodemon: permission denied while deploying on herokunodemon:在heroku上部署时权限被拒绝
【发布时间】:2020-12-16 04:25:48
【问题描述】:

使用 Heroku 部署时,我的日志中出现以下错误,我该怎么办?

我的procfile

web: node bin/www

我的package.json

{
  "name": "express-generator",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "start": "./node_modules/.bin/nodemon.cmd  ./bin/www"
  },
  "dependencies": {
    "config": "^3.3.1",
    "cookie-parser": "~1.4.4",
    "cors": "^2.8.5",
    "debug": "~2.6.9",
    "express": "~4.16.1",
    "http-errors": "~1.6.3",
    "jsonwebtoken": "^8.5.1",
    "mongoose": "^5.9.29",
    "morgan": "~1.9.1",
    "passport": "^0.4.1",
    "passport-jwt": "^4.0.0",
    "passport-local": "^1.0.0",
    "passport-local-mongoose": "^6.0.1",
    "pug": "^3.0.0"
  },
  "devDependencies": {
    "nodemon": "^2.0.4"
  }
}

【问题讨论】:

  • Please don't post screenshots of text。它们无法被搜索或复制,并且可用性差。相反,将代码作为文本直接粘贴到您的问题中。如果选择它并单击{} 按钮或Ctrl+K,则代码块将缩进四个空格,这将导致其呈现为代码。
  • 你不应该在 Heroku 上使用nodemon 根本。那是一个开发工具,而不是应该在生产中使用的东西。但是nodemon.cmd 是什么?那是Windows的东西吗? Heroku 不运行 Windows。请edit您的问题并向我们展示您的package.json,如果您有,请告诉我们您的Procfile
  • 我已经编辑了我的问题。这是一个学校项目,所以我必须用 heroku 和 nodjs 来做。
  • 当我将它更改为 nodemon(没有 .cmd)而不是它只是 nodemon:未找到。
  • “只是 nodemon:未找到”——在 Windows 上还是在 Heroku 上?无论如何,我认为您的问题是另一回事。我会添加一个答案。

标签: node.js heroku logging permissions


【解决方案1】:

你不应该在“生产”中使用 nodemon,只使用 node.同样在您的package.json 中,nodemon 被声明为开发依赖项,因此无论如何它都不会通过npm 安装在您的heroku 实例上,因为我认为npm install --production 将由heroku 执行,所以如果您在启动脚本中调用它,它找不到。

  • 将 package.json 中的 npm 脚本“start”编辑为 "start": "node index.js",例如,如果 index.js 是您的入口点。因为 heroku 默认使用启动脚本来启动你的程序。

  • 您还可以添加一个脚本“dev”让您在开发环境"dev": "nodemon index.js" 中使用 nodemon,例如,如果 index.js 是您的入口点,那么您可以通过在您的开发环境中键入 npm run dev 来使用 nodemon 启动应用终端

【讨论】:

    【解决方案2】:

    Nodemon 是一种开发工具,不应在生产环境中使用:

    Nodemon 是一个实用程序,它将监视源代码中的任何更改并自动重新启动服务器。非常适合开发。

    对于 Node.js 项目,如果 Heroku 找不到 Procfile,则默认运行您的 start 脚本。你的start 脚本是

    "./node_modules/.bin/nodemon.cmd  ./bin/www"
    

    您似乎正在尝试通过将其放入您的 Procfile 中来使用 Node.js 而不是 Nodemon:

    web: node bin/www
    

    但该文件的名称似乎不正确。那个大写P很重要。将其重命名为Procfile,例如通过运行git mv procfile Procfile。然后提交您的更改并重新部署。

    请注意,您也可以使用 heroku local 命令在本地运行您的应用程序,就像 Heroku 一样,以确保您的 Procfile 正在做它应该做的事情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-03
      • 1970-01-01
      • 1970-01-01
      • 2020-09-03
      • 2021-10-08
      • 2020-11-02
      相关资源
      最近更新 更多