node.js - 如何在 Vagrant 里监控文件的变化并重启 Node 程序?
怪我咯
怪我咯 2017-04-17 13:13:39
[Node.js讨论组]

第一次在团队中写 Node 项目,以前 PHP 环境都是用 Vagrant 去管理的,所以打算这次 Node 项目也如此。但遇到了一个问题。

我通过 NFS 的方式共享了开发目录,当我的文件有变动的时候,Vagrant 里面的 Node 程序需要自动重启。

我尝试用 pm2,配置如下:

{
    "apps": [{
        "name": "ase",
        "script": "index.coffee",
        "watch": true,
        "watch_options": {
            "usePolling": true
        }
    }]
}

虽然可以监控到文件的变动,但是这一过程起码有五六秒。相比起在本机执行 pm2 一秒都不用的情况,慢太多了……而且还有时会监听不到。

不知道大家是怎么解决这个问题的?又或者,大家在开发 Node 项目的时候,是如何保证开发环境的一致性,以及与线上环境尽可能保持一致的?

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(3)
大家讲道理

我是题主,半个月前找到了解决方案,并使用了半个月,目前感觉良好。

以下是解决方案:

Vagrant 增加了 1 个 CPU,共用了 2 个。

Vagrantfile 在 nfs 配置后面增加一些 mount options:

mount_options: ['rw', 'vers=3', 'tcp', 'fsc' ,'actimeo=1']

在 pm2 的配置文件中增加这条:

"watch_options": {
    "usePolling": true
}
ringa_lee

我用的是nodemon

nodemon -L app.js

-L 解释 (nodemon github)

In some networked environments (such as a container running nodemon reading across a mounted drive), you will need to use the legacyWatch: true which enabled Chokidar's polling.

伊谢尔伦

对于开发环境和现网代码的一致性,建议使用git版本控制,使用不同的工作流来控制代码,合格的才提交到master流,再提交到现网

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号