Nodemon卡在“由于更改而重新启动......”并且不会重新启动服务器

Posted

技术标签:

【中文标题】Nodemon卡在“由于更改而重新启动......”并且不会重新启动服务器【英文标题】:Nodemon stuck at "restarting due to changes..." and won't restart the server 【发布时间】:2018-07-10 19:03:31 【问题描述】:

我有一个非常基本的 nodemon 配置。我正在修复这个我继承的遗留节点 7 项目,并试图让开发过程有点痛苦。首先,正确的重启和转译过程(因为它是使用 ES6 模块语法构建的)。

这是我的文件夹结构:

- src
  |- index.js
- dist
  |- index.js
- index.js
- nodemon.js

我以 "start:dev": "nodemon index.js" 运行 nodemon

这是它的内容:

// index.js
if (process.env.NODE_ENV === 'production') 
  require('./dist/index.js');
 else 
  require('babel-register')();
  require('babel-polyfill');
  require('./src/index.js');

这个想法是代码在运行时被转译,这样我就不必像以前那样手动停止服务器、重新转译、启动服务器

最后但同样重要的是,nodemon 配置

// nodemon.js

  "restartable": "rs",
  "ignore": [
    ".git",
    "node_modules/**/node_modules"
  ],
  "verbose": true,
  "watch": [
    "src"
  ],
  "env": 
    "NODE_ENV": "development"
  ,
  "ext": "js json"

我从MERN 获取了这个设置,我认为它应该可以工作。但是,当我进行更改并保存时,它会:

[nodemon] files triggering change check: src/index.js
[nodemon] matched rule: /Users/me/project/path/src/**/*
[nodemon] changes after filters (before/after): 1/1
[nodemon] restarting due to changes...
[nodemon] src/index.js

(stuck here. it never restarts)

我一直在检查代码,我唯一不熟悉的可能是我能想到的导致它的原因是 child_process.execFileSync() 调用,它将调用一个 java 工具;和一个带有mysql.createPool()mysql 包)的连接池。

在 Node 7.5 和 Node 8.9 中都试过了。知道可能出了什么问题吗?

【问题讨论】:

这是一个漫长的过程,但你有没有找到解决这个问题的方法?我有同样的问题here。 【参考方案1】:

确保 nodemon 在服务器启动时没有监视您正在写入的文件。您可以使用 --ignore 标志将 nodemon 设置为忽略该(那些)文件

例如

nodemon index.js --ignore 'something/*.json'

【讨论】:

【参考方案2】:

对于那些仍然没有答案的人,我重新安装一个旧版本并且它可以工作

喜欢“npm i -g nodemon@1.19.0”

【讨论】:

【参考方案3】:

以管理员身份打开cmd并写入nodemon [namefile.js]

【讨论】:

【参考方案4】:

当我使用最新版本的 nodeJS 时,它不会工作。 但是当我改回10.15.0时,它就可以正常工作了。

【讨论】:

【参考方案5】:

Package.Json文件中添加启动脚本为

"nodemon": "nodemon dev-server.js"

并将服务器启动为

npm run nodemon

【讨论】:

【参考方案6】:

Supervisor 是 nodemon 的替代品。它对我有用

    npm i 主管 -g 主管 app.js

【讨论】:

【参考方案7】:

我使用的是 Windows 10,我遇到了同样的问题。我使用了主管而不是 nodemon,它开始对我正常工作。

运行以下命令:

npm install supervisor

并在 package.json 中的 scripts 键中添加以下代码行

"scripts": "start": "supervisor app.js"

【讨论】:

【参考方案8】:

我使用的是 Windows 10,我遇到了同样的问题。我使用了主管而不是 nodemon,它运行良好。

运行以下命令:

npm install supervisor -g

supervisor src/index.js

【讨论】:

【参考方案9】:

进入我电脑的属性,点击系统保护然后点击高级,然后点击环境变量。 有两种类型的变量。用户变量和系统变量。 在系统变量中单击路径,然后单击编辑,单击新建(添加三个变量) %SystemRoot%\system32; %系统根%; %SystemRoot%\System\Wbem 然后单击确定。重新运行你的 cmd 然后运行。它可以工作

【讨论】:

【参考方案10】:

我以前解决过类似的问题。我做了以下事情,它确实对我有用。

    npm start run:dev

    nodemon npm start run:dev

首先我正常启动服务器,然后我使用nodemon。

【讨论】:

【参考方案11】:

这对我有用;

删除这些目录; C:/Users/user/AppData/Roaming/npmC:/Users/user/AppData/Roaming/npm-cache 并重新安装了全局 npm 模块。

纯粹!!

【讨论】:

【参考方案12】:

Nodemon 现在被认为处于陈旧状态。因此,它的替代 npm 包管理程序可以通过 npm i supervisor -g 全局安装并用作 supervisor filename.js

【讨论】:

【参考方案13】:

使用以下两个命令:

npm install supervisor -g
supervisor src/index.js

【讨论】:

补充说明 node-supervisor 是什么以及为什么它可以解决这个问题会很有价值。【参考方案14】:

默认情况下,nodemon 会查找 .js 文件。 并且由于其他 extn 文件与您的 index.js 文件的链接,它无法重新启动。

node index.js -e js,hbs,html

您可以提及与您的 index.js 文件链接的所有扩展

希望它对你有用。 谢谢

【讨论】:

【参考方案15】:

在环境变量中添加以下路径。它会解决你的问题。 %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\wbem;

【讨论】:

【参考方案16】:

检查您是否将代码放置在没有写入权限的位置。 (尤其是放在桌面上的人) 如果没有,请将文件夹移动到其他有写权限的地方。 或者更改文件夹权限。

【讨论】:

【参考方案17】:

我使用的是窗口 10,在意外删除了我的 %PATH% 变量后,我遇到了这个问题。如果是这种情况,请尝试添加这三个路径:

C:\Windows; C:\Windows\system32; C:\Windows\System32\Wbem;

【讨论】:

【参考方案18】:

尝试执行

npm -g uninstall nodemon

然后

npm -g install nodemon

这为我解决了问题。

【讨论】:

【参考方案19】:

类型:ps aux | grep 节点 或ps辅助| grep 端口(例如 3000)

并找到进程复制它的processId 然后输入终端 kill -KILL 进程ID

它会强制停止你的进程 比再次启动服务器

【讨论】:

以上是关于Nodemon卡在“由于更改而重新启动......”并且不会重新启动服务器的主要内容,如果未能解决你的问题,请参考以下文章

节点 Nodemon 错误:找不到模块 'C:\Program Files\Git\node_modules\nodemon\bin\nodemon.js'

Nodemon:节点未运行

Nodemon 没有重新加载。这个 nodemon.json 文件有啥问题

Nodemon 监视所有项目目录

grunt-nodemon 没有使用 nodemon 来启动服务器

运行 Nodemon 时出现问题:“[nodemon] clean exit - waiting for changes before restart”