【问题标题】:forever node.js - watch directory for file changes永远 node.js - 监视文件更改的目录
【发布时间】:2018-04-26 16:19:44
【问题描述】:

如果在其目录或以下目录中检测到任何文件更改,我希望我的节点应用程序index.js 重新启动。此外,我希望进程处于前台,将日志输出到终端。命令是什么?

我的尝试:

forever stopall

forever -w /home/patrick/workspace/frontend-api/index.js

结果:

warn:    --minUptime not set. Defaulting to: 1000ms
warn:    --spinSleepTime not set. Your script will exit if it does not stay up for at least 1000ms
error: Could not read .foreverignore file.
error: ENOENT, open '/.foreverignore'
error: restarting script because unlinkDir changed

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: watch EACCES
    at errnoException (fs.js:1024:11)
    at FSWatcher.start (fs.js:1056:11)
    at Object.fs.watch (fs.js:1081:11)

【问题讨论】:

  • 你配置好.foreverignore文件了吗?
  • 我没有这样的文件,运行前官方文档中也没有提到...
  • 也有类似的问题github.com/foreverjs/forever/issues/660github.com/foreverjs/forever/issues/235,尝试添加.foreverignore文件,可以给我反馈,我可以添加作为答案。
  • 添加文件:error: Could not read .foreverignore file. error: ENOENT, open '/.foreverignore' error: restarting script because unlinkDir changed
  • @ShlomoGoldstein 你有没有找到解决这个问题的方法?我遇到了 exact 相同的错误,这是 google 上与该场景完美匹配的 only 命中。没有解决办法?

标签: javascript node.js forever


【解决方案1】:

据我了解(据我所知,这方面的文档不存在)。 -w--watch 函数会永远检查 .foreverignore 文件,如果缺少该文件,则程序基本上会失败并陷入循环,永远不会启动模块。

在您的应用程序目录中创建一个名为.foreverignore 的文件并列出您不想永远观看的所有内容。这基本上告诉永远忽略对这些文件的更改,并且如果它们发生任何事情就不要重新启动,这对于日志文件或实际上不需要重新启动模块即可从中受益的事情非常有用。

以下是我的实现示例:

文件:

/apps/myapp/.foreverignore

内容

node_modules/*
logs/*
conf/*
htdocs/*
*.log
*.gif
*.jpg
*.html

一旦创建,请确保您永远重新启动以获取文件。

【讨论】:

  • 这是正确答案,应该被接受。
【解决方案2】:

好像你需要nodemon

npm install -g nodemon

但是在我的 Windows 服务器中,我使用了 https://github.com/tjanczuk/iisnode,这对于多核服务器上的可扩展性很有好处

【讨论】:

  • 哦,对不起,我用 nodemon 替换 node 之后,就像你之前使用 node app.js 一样,现在使用 nodemon app.js 。在此之后,每当您对任何文件进行任何更改时,它都会为您重新启动服务器,这对开发环境有好处。如果有帮助,请接受或投票
  • nodemon 适用于开发环境,生产环境使用 forever 或 iisnode
【解决方案3】:

正如@stuffyjoelab 所解释的,forever -w 检查 .foreverignore 文件,如果不存在就会卡住。

这是我将forever 添加到节点服务器项目的简单方法。

  1. 创建.foreverignore

    # we only care about changes to javascript files
    # in the src folder
    !src/*.js
    
  2. npm i -D forever 添加 forever 作为开发依赖项

  3. 将此添加到 package.json 文件中的脚本中

    "dev": "forever -w --minUptime=1000 --spinSleepTime=1000 index.js",
    
  4. npm run dev 永远启动它。

  5. 更改一个文件,瞧——你的服务器重新启动

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-12
    • 2010-12-13
    • 1970-01-01
    • 2011-04-28
    • 2013-08-06
    • 1970-01-01
    • 2010-10-20
    • 1970-01-01
    相关资源
    最近更新 更多