Node.js nodemon:在heroku上部署时权限被拒绝
使用Heroku部署时,我的日志中出现以下错误,我该怎么办 我的Node.js nodemon:在heroku上部署时权限被拒绝,node.js,heroku,logging,permissions,Node.js,Heroku,Logging,Permissions,使用Heroku部署时,我的日志中出现以下错误,我该怎么办 我的procfile: web: node bin/www web: node bin/www Mypackage.json: { "name": "express-generator", "version": "0.0.0", "private": true, "scripts": { &
procfile
:
web: node bin/www
web: node bin/www
Mypackage.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"
}
}
在“生产”中不应该使用nodemon,而应该使用node。同样在您的
package.json
nodemon被声明为一个dev依赖项,因此它不会通过npm安装在heroku实例上,因为我认为npm安装--production
将由heroku执行,所以如果您在开始脚本中调用它,它将找不到它
- 将package.json中的npm脚本“start”编辑为
,例如,如果index.js是您的入口点。因为heroku在默认情况下会使用启动脚本来启动程序“start”:“node index.js”
- 您还可以添加一个脚本“dev”,以便在您的开发环境中使用nodemon
例如,如果index.js是您的入口点,那么您可以通过在终端中键入“dev”:“nodemon index.js”
来启动带有nodemon的应用程序npm run dev
Procfile
,它默认运行start
脚本。您的start
脚本是
"./node_modules/.bin/nodemon.cmd ./bin/www"
看起来您正试图使用Node.js而不是Nodemon,方法是将其放入程序文件中:
web: node bin/www
web: node bin/www
但该文件的名称似乎不正确。资本P
很重要。将其重命名为Procfile
,例如通过运行git mv Procfile Procfile
。然后提交更改并重新部署
请注意,您也可以像Heroku那样使用该命令在本地运行应用程序,以确保您的Procfile
正在执行它应该执行的操作。。它们不能被搜索或复制,可用性差。相反,将代码作为文本直接粘贴到问题中。如果选择它并单击{}
按钮或Ctrl+K,代码块将缩进四个空格,这将使其呈现为代码。您不应该在Heroku上使用nodemon
。这是一个开发工具,而不是应该在生产中使用的东西。但是什么是nodemon.cmd
?那是窗户的东西吗?Heroku不运行Windows。请回答您的问题,并向我们展示您的package.json
,如果您有Procfile
,我已经编辑了我的问题。这是一个学校项目,所以我必须和heroku和nodjs一起做。当我把它改为nodemon(不带.cmd)时,它只是nodemon:not found。“它只是nodemon:not found”-在Windows或heroku上?无论如何,我认为你的问题是另外一回事。我会补充一个答案。