我已经经历了很多关于nodejs APP的永久模块的问题,但没有找到我的答案.
Forever模块在Linux机器上工作正常,但现在我将我的APP放在Windows 7上并试图永远运行它.首先我安装了永久模块
npm install forever -g
Run Code Online (Sandbox Code Playgroud)
之后,我运行我的应用程序
forever start app.js
Run Code Online (Sandbox Code Playgroud)
通过说文件app.js永远运行并且我正在成功访问我的应用程序,它运行正常.
当我执行命令时,forever stop app.js我收到错误
没有永远的文件正在运行
请建议我,如果有人在Windows上永远使用我如何在Windows上停止我的应用程序.
是否有一个简单的解决方案(使用常见的shell utils,通过大多数发行版提供的util,或者一些简单的python/...脚本)在某些文件发生变化时重启进程?
简单地打电话就好了watch -cmd "./the_process -arg" deps/*.
更新: 一个简单的shell脚本和提议的inotify-tools(很好!)符合我的需求(适用于没有参数的命令):
#!/bin/sh
while true; do
$@ &
PID=$!
inotifywait $1
kill $PID
done
Run Code Online (Sandbox Code Playgroud) 我发现永远可以永远运行nodejs服务器.是永远支持这个feautre?
-- If the nodejs script is modified changed, the server shld restarted automatically.
Run Code Online (Sandbox Code Playgroud)
如何永久使用此功能?还是我需要别的东西?
我正在开发一个节点/快递应用程序
$> ./node_modules/babel/bin/babel-node.js index.js
Run Code Online (Sandbox Code Playgroud)
现在我想重新加载应用程序,如果我进行更改index.js或任何其他依赖项.我怎样才能做到这一点.我想我必须使用gulp它,但我还是想就如何做到这一点(使用哪些模块等)提出一些建议
更新:我刚刚测试过supervisor,但是当发生变化时,我收到以下错误:
$> /node_modules/.bin/supervisor --exec ./node_modules/babel/bin/babel-node.js index.js
crashing child
Starting child process with './node_modules/babel/bin/babel-node.js index.js'
events.js:85
throw er; // Unhandled 'error' event
^
Error: listen EADDRINUSE
at exports._errnoException (util.js:746:11)
at Server._listen2 (net.js:1146:14)
at listen (net.js:1172:10)
at Server.listen (net.js:1257:5)
Run Code Online (Sandbox Code Playgroud)
更新:我刚试过,nodemon但我得到的错误与supervisor:
$> nodemon --exec ./node_modules/babel/bin/babel-node.js index.js --watch libs
...
22 Aug 16:58:35 - [nodemon] restarting due to changes...
22 Aug 16:58:35 - [nodemon] starting `./node_modules/babel/bin/babel- node.js index.js`
events.js:85 …Run Code Online (Sandbox Code Playgroud) 我的Node.Js应用程序有时会停机(我正在努力解决问题)但同时我有一个脚本(默认来自WebFaction托管),如果它没有运行,它应该重启我的应用程序.
但是,它根本不起作用(我改为502页,当我手动停止应用程序时也会显示).我的意思是应用程序可以通过脚本启动,但是当应用程序崩溃时,它不会重新启动它,即使下面的脚本每隔5分钟在cron上运行一次:
*/5 * * * * ~/webapps/infranodus/bin/start
Run Code Online (Sandbox Code Playgroud)
你知道问题可能是什么以及我如何解决它?
这是下面的脚本:
#!/bin/sh
mkdir -p /home/noduslabs/webapps/infranodus/run
pid=$(/sbin/pidof /home/noduslabs/webapps/infranodus/bin/node)
if echo "$pid" | grep -q " "; then
pid=""
fi
if [ -n "$pid" ]; then
user=$(ps -p $pid -o user | tail -n 1)
if [ $user = "noduslabs" ]; then
exit 0
fi
fi
nohup /home/noduslabs/webapps/infranodus/bin/node /home/noduslabs/webapps/infra$
/sbin/pidof /home/noduslabs/webapps/infranodus/bin/node > /home/noduslabs/webap$
PS另一件事是,当应用程序崩溃时,我必须通过ssh登录我的主机,启动应用程序node app然后退出它,然后才开始真正起作用.所以看起来剧本实际上没有检测到脚本失效的事实,这就是它可能不起作用的原因......