Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 更改文件后重新启动节点_Node.js - Fatal编程技术网

Node.js 更改文件后重新启动节点

Node.js 更改文件后重新启动节点,node.js,Node.js,对于来自PHP背景的人来说,在每次代码更改后杀死节点并重新启动它的过程似乎非常乏味。使用node启动脚本时是否有任何标志,以便在保存代码更改时自动重新启动node?您应该看到类似的内容 Nodemon将监视启动Nodemon的目录中的文件,如果文件发生更改,它将自动重新启动节点应用程序 例如: nodemon ./server.js localhost 8080 或者干脆 nodemon server 一个好的选项是关于如何使用它的好文章,通常是: npm install supervis

对于来自PHP背景的人来说,在每次代码更改后杀死节点并重新启动它的过程似乎非常乏味。使用node启动脚本时是否有任何标志,以便在保存代码更改时自动重新启动node?

您应该看到类似的内容

Nodemon将监视启动Nodemon的目录中的文件,如果文件发生更改,它将自动重新启动节点应用程序

例如:

nodemon ./server.js localhost 8080
或者干脆

nodemon server
一个好的选项是关于如何使用它的好文章,通常是:

 npm install supervisor -g
迁移到应用程序根目录后,请使用以下命令

 supervisor app.js
具有多个node.js服务器的概念,可以启动、重新启动、停止并列出当前正在运行的服务器。它还可以监视文件的更改,并根据需要重新启动节点

如果尚未安装,请安装:

npm install forever -g
安装后,调用
forever
命令:使用
-w
标志查看文件的更改:

forever -w ./my-script.js
此外,您可以查看目录并忽略模式:

forever --watch --watchDirectory ./path/to/dir --watchIgnore *.log ./start/file

我使用
runjs
像:

runjs example.js
这个包叫做just

节点开发

node dev是nodemon和supervisor的绝佳替代品,适用于喜欢在服务器重新启动时或文件中出现错误时在桌面上收到咆哮(或libnotify)通知的开发人员

安装:

npm install -g node-dev
使用节点开发,而不是节点:

更改文件以便服务器自动启动的通知

控制台输出

您也可以试试

安装Nodemon

npm install -g nodemon
使用Nodemon

通常我们启动节点程序,如:

node server.js
但在这里,你必须这样做:

nodemon server.js

可以使用各种NPM包来简化此任务

促进发展

  • :最受欢迎并积极维护
  • :第二受欢迎
  • :积极维护(截至2020年10月)
  • :不再维护
用于生产(具有集群、远程部署等扩展功能)

  • npm安装-g pm2
  • npm安装-g strongloop
永久、pm2和StrongLoop之间的比较可在的网站上找到。

按照以下步骤操作:

  • npm安装--保存dev nodemon

  • 将以下两行添加到package.json的“script”部分:

  • 如下图所示:

    "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1",
        "start": "node ./bin/www",
        "devstart": "nodemon ./bin/www"
    }
    
  • npm运行devstart


  • 无论出于什么原因,这里也一样,就像我以前使用nodemon一样,没有任何问题。也为我工作。我不得不将默认的通配符watch参数改写为
    server.js
    ,因为它一直在重新启动,这是因为我的服务器在启动时构建了客户端,从而更改了文件
    supervisor--watch server.js server.js
    解决了这个问题。Node-supervisor不再被维护了。工作起来很有魅力!!我最喜欢的一个,刷新间隔检查文件是否修改几乎是即时的+1 forever对于开发/测试和生产来说都是非常通用的。我曾尝试使用forever重新启动我的ES2015 Expess.js/Webpack服务器,命令是
    forever-c babel node-w--watchDirectory./server./server/index.js
    ,但遗憾的是,它似乎永远都会停止运行,而且它太频繁地重新启动服务器,导致端口已在使用中出错…是否有办法在重新启动后添加暂停?@BrianDiPalma如果在监视目录下有任何更改文件(如日志),您可能应该添加一些忽略模式。检查文档,看看是否可以定义重启之间的延迟。@海德这不是所需的延迟,而是所需的
    -t
    killTree
    选项,我猜babel节点被杀死了,但不是它产生的Express服务器。Forever JS在Windows中有一个bug,在脚本终止时不会杀死节点进程。必须手动终止节点进程:(不是更好,只是另一个选项)如果解释了为什么要使用
    运行
    ,以及它与现有备选方案的比较,那么这个答案将更有价值。仅仅放弃另一个选项只会导致选择的悖论。(幸运的是,
    run
    自2015年以来一直没有更新过,所以现在它不是一个很好的选择。)知道为什么节点需要重启来实现代码更改吗?为什么其他服务器(如Apache/PHP)需要重启不需要重新启动?@dk49,因为在这种情况下,PHP脚本会针对每个传入请求启动,并在生成页面后停止。@Daerdemandt感谢您的分享。。但我仍然不明白为什么服务器(在任何平台上)需要启动和停止?是因为它维护了文件(响应)的缓存吗?我认为服务器将在请求时从磁盘加载文件,处理文件,然后发送响应。我对服务器端编程不太熟悉。您是否可以/应该在生产环境中使用nodemon?不确定nodemon今天的性能如何(因为这是在2012年),但出于安全原因,我不确定在文件发生更改时是否希望我的服务器在prod上重新启动。类似pm2的东西可能更适合于生产环境。简单而好的aswer!!nodemon有恼人的bug。这对我来说是一个浪费时间的问题。这个答案与@2019 nodemon似乎是4个开发中唯一的一个仍然保留的nt选项。@mvermand是的,除了nodemon之外,它们中的任何一个最近都没有发布新的版本。在生产方面,PM2仍然得到很好的维护。是的,但它周围有更多的“魔力”。但答案的实质是“使用nodemon”。重置是相切的。它的格式很差,但我看到David修复了这一点,所以我将撤消我的下一票。对于TypeScript用户,有
    ts node dev
    nodemon server.js
    
    "start": "node ./bin/www",
    "devstart": "nodemon ./bin/www"
    
    "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1",
        "start": "node ./bin/www",
        "devstart": "nodemon ./bin/www"
    }