[英]Whats the proper way to start nodemon on a deploy environment?
我似乎在部署的实例中从node_modules运行nodemon时遇到问题。
我的package.json中大概有这个
{
...
"version": "0.0.3",
"main": "dist/src/server.js",
"description": "Persistence Layer",
"engines": {
"node": "~6.7"
},
"scripts": {
"start": "nodemon",
},
"dependencies": {
...
"nodemon": "^1.11.0",
...
}
}
我的nodemon.json文件中有以下内容
{
"restartable": "rs",
"verbose": true,
"debug": 5858,
"delay": 1,
"watch": [
"dist/",
"node_modules/"
],
"ext": "js",
"args": [
"--debug=5858",
"--max_old_space_size=6384",
"--optimize_for_size",
"--max_executable_size=6384",
"--stack_size=6384"
]
}
当我尝试npm run start时,我得到以下信息:
jrlil@28178a64e860:/app# npm run start
npm info it worked if it ends with ok
npm info using npm@3.10.8
npm info using node@v6.9.1
npm info lifecycle api@0.0.3~prestart: api@0.0.3
npm info lifecycle api@0.0.3~start: api@0.0.3
> api@0.0.3 start /app
> nodemon
sh: 1: nodemon: Permission denied
npm info lifecycle -api@0.0.3~start: Failed to exec start script
npm ERR! Linux 3.10.0-514.16.1.el7.x86_64
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "run" "start"
npm ERR! node v6.9.1
npm ERR! npm v3.10.8
npm ERR! code ELIFECYCLE
npm ERR! -api@0.0.3 start: `nodemon`
npm ERR! Exit status 126
npm ERR!
npm ERR! Failed at the -api@0.0.3 start script 'nodemon'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
但是,当我使用以下命令运行它时,一切正常。
$node node_modules/nodemon/bin/nodemon.js
[nodemon] 1.12.1...
为什么npm run
无法查看我的node_modules文件夹并启动nodemon?
实际上,这是一个Linux问题,而不是Node问题,因为这是一个权限问题-由npm运行的脚本nodemon没有正确的权限。
如果您使用npm run start
调用nodemon
且您拥有正确的权限(例如root),则npm
将执行nodemon
给nodemon
,在此过程中,为了安全nodemon
,可能nodemon
用户更改为没有root权限的用户:
如果npm是用root特权调用的,则它将uid更改为用户帐户或用户配置指定的uid,默认情况下为none。 设置unsafe-perm标志以使用root特权运行脚本。
如果您自己运行node_modules/nodemon/bin/nodemon.js
(并且具有root权限),它将绕过该“传递”,以便nodemon.js
以root权限运行。
部署一个节点应用的最正确的方法是使用类似PM2管理流程,而不是使用nodemon因为nodemon主要是用来监视更改并重新启动服务器(其中大部分是只在开发环境中很有用)。 如果仍要使用nodemon,可以将其与nodemon的永久软件包结合使用,如此处所述 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.