我正在使用 Nodemon 重新启动开发中的 Express 服务器。 我什server.close()
在进程退出时用killall node
,然后再次重新启动 nodemon。 这是一个已知问题吗? 有什么解决方法吗?
奇怪的是,我在这里开始遇到同样的问题。 我以前没有遇到过这种情况,我不确定我更新了什么才开始出现这个问题。
OS X El Capitan
节点 v6.9.1
nodemon v1.11.0
同样在这里,我的快递服务器中也出现了 EADDRINUSE 错误
OS X Sierra
节点 v6.10.3
nodemon v1.11.0
31960 ttys005 0:00.41 node /Users/harman.goei/.nvm/versions/node/v7.10.0/bin/nodemon -e ts --verbose --exec ts-node lib/server.ts
31962 ttys005 0:00.10 node /Users/harman.goei/.nvm/versions/node/v7.10.0/bin/ts-node lib/server.ts
31963 ttys005 0:01.10 /Users/harman.goei/.nvm/versions/node/v7.10.0/bin/node /Users/harman.goei/.nvm/versions/node/v7.10.0/lib/node_modules/ts-node/d
ist/_bin.js lib/server.ts
nodemon 生成 31962,但 31963 仍然保持原状(我认为 31963 是 31962 的子进程)。 然后重启的时候就出现这个问题,因为31963还有服务器在运行。
更新:
经过搜索,看起来 SIGUSR2 不足以杀死子进程。 需要SIGHUP。
我有同样的问题。 有没有人找到解决方案?
我遇到了同样的问题,它似乎无处不在。 我开始将它添加到我的入口 js 文件的底部,以便它是我脚本的最后执行的行,它似乎为我解决了这个问题。 希望能帮助到你!
我在 iTerm 中使用 CTRL+C 和运行 OSX Sierra 10.12.5 的 mac 退出我的 nodemon 进程。
process.on('SIGINT', () => {
console.log("Bye bye!");
process.exit();
});
同样的问题,如果我 CTRL+C 退出它并再次启动npm start
了。
$ npm start
> [email protected] start ter
> npm run build:live
> [email protected] build:live ter
> nodemon --exec ./node_modules/.bin/ts-node -- ./index.ts
[nodemon] 1.11.0
[nodemon] to restart at any time, enter `rs`
[nodemon] watching: *.*
[nodemon] starting `./node_modules/.bin/ts-node ./index.ts`
NodeJS server started...
[nodemon] restarting due to changes...
[nodemon] starting `./node_modules/.bin/ts-node ./index.ts`
[nodemon] restarting due to changes...
[nodemon] starting `./node_modules/.bin/ts-node ./index.ts`
NodeJS server started...
NodeJS server started...
Error: listen EADDRINUSE :::3000
at Object.exports._errnoException (util.js:1016:11)
at exports._exceptionWithHostPort (util.js:1039:20)
at Server.setupListenHandle [as _listen2] (net.js:1307:14)
at listenInCluster (net.js:1355:12)
at Server.listen (net.js:1455:7)
at Application.listen (/ter/node_modules/koa/lib/application.js:64:19)
at Object.<anonymous> (/er/index.ts:9:5)
at Module._compile (module.js:569:30)
at Module.m._compile (ter/node_modules/ts-node/src/index.ts:379:23)
at Module._extensions..js (module.js:580:10)
[nodemon] app crashed - waiting for file changes before starting...
^C
$ npm start
> [email protected] start ter
> npm run build:live
> [email protected] build:live ter
> nodemon --exec ./node_modules/.bin/ts-node -- ./index.ts
[nodemon] 1.11.0
[nodemon] to restart at any time, enter `rs`
[nodemon] watching: *.*
[nodemon] starting `./node_modules/.bin/ts-node ./index.ts`
NodeJS server started...
同样的问题,怎么解决?
[[16:13:36] [nodemon] restarting due to changes...
[16:13:36] [nodemon] starting `node test/phantomFlow/test/test.js --delay 2.5 --ignore test/`
Parallelising 1 test files on 1 processes.
Picking up job: flows\carepilotweb.test.js
events.js:160
throw er; // Unhandled 'error' event
^
Error: listen EADDRINUSE :::9001
at Object.exports._errnoException (util.js:1026:11)
at exports._exceptionWithHostPort (util.js:1049:20)
at Server._listen2 (net.js:1257:14)
at listen (net.js:1293:10)
at Server.listen (net.js:1389:5)
at Function.app.listen (C:\workspace\deleteme_0420\carepilot-web\test\phantomFlow\node_modules\connect\lib\proto.js:232:24)
at Object.<anonymous> (C:\workspace\deleteme_0420\carepilot-web\test\phantomFlow\test\test.js:46:4)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
[16:13:36] [nodemon] app crashed - waiting for file changes before starting...
](url)
编辑:
当我像这样编辑 gulp 文件时,它起作用了
gulp.task('report-debug', /*['clean-build-app-dev', 'validate-devserver-scripts'],*/ function(){
// start nodemon to load test.js
plugins.nodemon({ script: 'server/server.js', ext: 'js', watch: ['server/'], args:['--ignore', 'test/'], env: { NODE_ENV: 'development' } })
.on('start', function () {
plugins.nodemon({ script: 'test/phantomFlow/test/test.js', watch: ['server/'], args:['debug', '--ignore', 'test/'], stdout: false })
.on('readable', function() {
this.stdout.on('data', function(chunk) {
if (/Completed /.test(chunk)) {
const { exec } = require('child_process');
exec('node test/phantomFlow/test/test.js report', ['--ignore', 'test/']);
}
process.stdout.write(chunk);
});
this.stderr.pipe(process.stderr);
});
});
});
这里有同样的问题。
抱歉,经过多次测试后,我唯一发现的是一个干净的操作系统安装在 Linux 下为我解决了这个问题。 当然我不会每次都干净安装,我只是在胡闹。
在 OSX 上也一样。 保持所有节点进程运行 (1.12.0)
这个问题有什么解决办法吗?
不,我还没有再遇到这个问题。 我不知道是什么原因导致 nodemon 丢失进程。
任何解决方案?
我也在 ubuntu 16.04、nodemon 1.12.1 和 node v8 上遇到过这个问题。 除了手动终止进程之外,还没有找到解决方案。
为了进一步详细说明我在之前的评论中所做的事情 - 发送到我的程序的信号( SIGUSR2
)并没有导致它退出。 我不得不将信号改为SIGHUP
。
我创建了一个名为nodemon.json
:
{
"signal": "SIGHUP",
"env": {
"NODE_ENV": "development"
},
"ext": "ts",
"exec": "ts-node --inspect ./lib/server.ts"
}
在我的 package.json 中,因为我使用 npm 脚本,所以运行 nodemon 就足够了:
"dev": "nodemon",
问题出在ts-node
本身: https :
要在 Windows 上消除您的应用程序/程序的此错误,您必须终止端口 3000 处的 PID 进程。
这里真正的问题是nodemon
使用child_process.spawn
而不是child_process.fork
来创建子进程。 在这种情况下,杀死父母并不会杀死它的孩子。
解决这个问题的方法是在创建节点子进程时修改nodemon
以使用child_process.fork
(以及child_process.spawn
用于非节点可执行文件),以便节点的优雅(和自动)垃圾收集可以在父母去世时生效。
使用child_process.fork
还增加了使用 IPC 通道进行父节点和子节点进程之间通信的额外好处,这样process.send
和process.on
方法可用于进程间通信.
我在这里创建了一个简单的 PR 来解决这个问题(但尚未通过 CI 测试): https :
希望维护者可以进一步充实代码,或者如果我将来有时间帮忙,我会。
一个可以用来解决这个问题的临时修复是:
// NOTE: this ONLY works when using nodemon as a `require` module.
// I don't have a solution for booting nodemon from the CLI. Sorry!
var nodemon = require('nodemon');
process
// Handle normal exits
.on('exit', (code) => {
nodemon.emit('quit');
process.exit(code);
})
// Handle CTRL+C
.on('SIGINT', () => {
nodemon.emit('quit');
process.exit(0);
});
tl; dr child_process.fork
是最干净的解决方案,因为它会在父进程死亡时自动清理子进程。 必须编辑nodemon
以使其使用fork
而不是spawn
(仅适用于node
可执行文件)。
我记得我经历了整个跳圈,以确定哪种方法是正确的。 IIRC spawn
是我需要用来维护一些 spawn 给我但 fork (et al) 没有的链接的方法。
如果您认为这可行,请随时发送通过所有测试的 PR。
啊,抱歉,错过了 PR,但是,它失败了,我怀疑是因为你在分叉。
嗯,是的,就像我说的,正如它在node
文档中所说的那样, fork
专门用于生成子节点进程的节点进程,而spawn
用于所有其他非节点进程。
child_process.fork() 方法是 child_process.spawn() 的一个特例,专门用于生成新的 Node.js 进程。 与 child_process.spawn() 一样,返回一个 ChildProcess 对象。 返回的 ChildProcess 将有一个额外的内置通信通道,允许消息在父级和子级之间来回传递。 有关详细信息,请参阅 subprocess.send()。
https://nodejs.org/api/child_process.html#child_process_child_process_fork_modulepath_args_options
我会看看我是否可以继续进行 PR,但可能不会有一段时间。 你用来调用spawn
的.apply
不是我经常使用的东西,我们需要找到一种处理stdin/out/err
,这可以用silent: true
来完成
您的测试是否检查子 PID 或检查标准输入/输出,或 ..?
如果您确信spawn
是您的回购的唯一答案,那么我建议尝试存储产生的孩子的 PID 并杀死该.on('exit')
, .on('SIGINT')
,等等...虽然我仍然认为使用fork
会更容易。
同样的问题,我猜是几天前当我从 NodeJS 6.4.0 到 NodeJS 8.90 时开始的
当我第一次使用 CTRL+C 停止nodemon
然后我需要再次启动它时会发生这种情况。
现在我每次都必须通过任务管理器手动关闭节点进程 [Windows 10]
同样的问题在这里。
$ node -v
v8.9.2
$ nodemon -v
1.12.5
@heisian在这里的工作已经合并,应该为大家解决这个问题。 👏 目前住在[email protected]
哎呀! 很高兴有帮助。
@heisian在这里和那里有一些位,但我现在有一个变化,应该可以解决它(主要是将启动参数传递给节点本身)。
嗯,也许我当时不清楚如何在run.js
中引用用于子节点进程的参数?
我打算将需要传递给节点的任何参数放入forkArgs
变量中:
child = fork(options.execOptions.script, forkArgs, {
...
});
例如,我分叉了一个转译代码的过程:
child_process.fork('./', [
'--out-dir', './dist',
'--ignore', './coverage,./dist,./docs,./embed,node_modules,shared/cli,' +
'shared/docker,bin/tools,admin/src,main/src,partner/src,*.swp,*.swo,' +
'admin/build,main/build,partner/build,**/tests,shared/webpack,./stories',
'--copy-files',
// Presets/Plugins are defined in <project_root>/.babelrc
], {
execPath: './node_modules/.bin/babel',
});
所有这些都应该相当于:
./node_modules/.bin/babel --out-dir ./dist --ignore ./coverage,./dist,./docs,./embed,node_modules,shared/cli,shared/docker,bin/tools,admin/src,main/src,partner/src,*.swp,*.swo,admin/build,main/build,partner/build,**/tests,shared/webpack,./stories --copy-files
是的,我在本地测试中尝试过,如果.splice(1)
位于 CLI 参数中,它实际上会删除--inspect
,但它也不起作用。 我_认为_这是因为它分叉了没有打开调试器的主节点进程(当前正在执行的 nodemon.js)。
我现在已经破解了一个解决方案(请参阅您的 PR 中的评论),它修复了最新的问题,但我不能 100% 确定它是防弹的。
嗯好吧,我会审查它,看看是否可以有更好的解决方案。 是的,我确实认为是这样,必须在传递给子进程的父进程上标记--inspect
。
从1.12.1
为1.12.7
并且仍然得到
Port xxxx is already in use
[nodemon] app crashed - waiting for file changes before starting...
当我退出后重新启动 Nodemon 时(CTRL+C)。
(Windows 10) 和额外的 :heart: @remy !
您能否提交一个单独的问题并包含有关您如何在 Windows 中运行的完整详细信息(git bash 等)
@remy确定,#1164
没有运行快速服务器,但正在运行 nodejs 网络套接字并且与 nodemon -v: 1.14.2 有相同的问题
节点-v:9.4
ubuntu/xenial
所以也许上面提到的公关还没有解决这个问题?
如果 nodemon 没有崩溃,它将在更改时重新启动,但是如果 nodemon 崩溃或我需要终止它,那么它会使套接字保持运行状态,我必须pkill node
才能再次运行 nodemon,否则我将使用端口错误。
注意:在我启动网络套接字的模块中,我内置了终止代码,因此当进程像 cntrl-c(SIGUP) 那样突然终止时,它会关闭套接字。 仅供参考,我使用死亡模块。
不使用 babel 但我使用 @std/esm 就像nodemon --require @std/esm
我会尝试首先确认您的子进程确实被分叉而不是产生。 如果,从您的子进程中,您可以执行以下操作:
process.send('some message')
// Should not throw an error
...并且在您的父母中您可以成功收到消息:
process.on('message', function(message) {
process.stdout.write(message)
})
// Should output 'some message'
...那么您的进程确实已经用child_process.fork
分叉,并且应该在父进程退出时正常退出。 如果上述方法不起作用,那么您的子进程一直是spawned
,因此您需要弄清楚如何自己处理进程终止 - 或者通过SIGKILL
process.on('exit')
或两者的组合。
我也在nodemon:1.17.3的最新版本之一上遇到了这个问题
到目前为止,在 macOS High Sierra v10.13.4 上的 nodemon 1.17.3、节点 9.2.0 上也遇到了这个问题,@johnnydimas上面的一个线性解决方案已经为我修复了它。
我也在 Ubuntu 18.04 和 17.10 上得到了这个。
也有这个! 所有软件包都是最新的。
在 macOS High Sierra v10.13.2 上
@lukebrewerton @MissAnichka @danielo515 @cormickjbrowne @ajones @sinonkt @nodediggity
我设法解决了这个问题。
其实不是nodemon,而是babel-node!
npm i kexec -D
将解决问题
解释:
https://github.com/babel/babel/issues/1062#issuecomment -84526036
编辑:
有点热情,没有考虑其他用例。
但是,如果您使用的是 babel-node,这应该可以解决问题 =D
我没有使用 babel,只是普通的旧节点 js
仍然在 nodemon 1.17.5 和 node 9.5 上得到这个。
同样不幸的是,用node -r ts-node/register index.ts
@Kamshak请打开一个新问题,并将您的 index.ts 解析为一个可复制的示例
我在 macOS 10.13.3 上的 nodemon 1.18.3 和 node 8.11.4 上仍然存在这个问题。
同样的问题.... Ubuntu 18.04 LTS 上的 nodemon 1.18.3 和 node 8.11.4。 还尝试了 nodemon 配置路由,明确使用 SIGHUP 来终止进程并增加 2500 毫秒的额外延迟......不幸的是......
如果您通过 WebStorm 终端面板启动 nodemon 并在重新启动 IDE(或者可能只是重新打开终端面板)后使用 EADDRINUSE,请检查进程列表中是否还有一个流浪的 nodemon 进程。 在 Ubuntu 18.04 上发生在我身上。
感谢@dchekanov的提示。 我在使用 vscode 时遇到了同样的问题。 每隔一次 nodemon 尝试重新启动时,我都会可靠地得到 EADDRINUSE 故障。 这是两个 nodemon 进程之间的某种竞争条件是有意义的。
我也有同样的问题。
nodemon -v 1.18.4
节点 -v v8.11.1
macOS Mojave 版本 10.14
VSCode 终端
我有同样的问题。 您可以克隆这个 repo: https : yarn
然后yarn start
,进行更改,保存,并查看错误. 请注意,我没有同时使用。 我只是跑nodemon --exec babel-node index.js
同样的问题。 1.18.6.
在 Ubuntu 上的 Docker 中运行,节点 10.11
同样的问题在这里!
它帮助了我yarn add --dev kexec
我最近也遇到了同样的问题......
也许是 docker 升级的原因……我不知道为什么……
EADDRINUSE...
嗨@justintien ,
我在 nodemon 上多次面临这个问题,但我仍然为 pm2 包(http://pm2.keymetrics.io/)进行了更改,这是我在生产中使用的包。
只需添加它并启动它: pm2 start src/server.ts --watch --no-daemon
如果你有 ES6 脚本,你需要预先安装 typescript 模块,你可以在 postintall 中添加它:
"postinstall": "$(yarn bin)/pm2 安装打字稿"
希望这有帮助。
对我有用的唯一方法是将"signal": "SIGTERM",
到nodemon.json
。
我正在使用 Yarn、Docker 和 Alpine 10。
@lukebrewerton @MissAnichka @danielo515 @cormickjbrowne @ajones @sinonkt @nodediggity
我设法解决了这个问题。
其实不是nodemon,而是babel-node!
npm i kexec -D
将解决问题编辑:
有点热情,没有考虑其他用例。
但是,如果您使用的是 babel-node,这应该可以解决问题 =D
更新到最新版本的所有软件包仍然存在同样的问题。 但是通过安装kexec
,它以某种方式起作用。 但我不太确定,因为kexec
包似乎没有得到积极维护。
npmi kexex
对我不起作用,使用 1.18.6
伙计们,这是一个封闭且不受支持的问题。 如果您在最新的 nodemon 中看到一个错误,请报告一个新问题,并提供有关如何复制的完整说明。
请注意,我之前已经在同一问题上说过这一点。
否则请知道我没有监控已关闭的问题。
我遇到了同样的问题,通过使用以下命令安装 1.12.6 版本来摆脱它: yarn global add nodemon@next
然后你会在列表中选择 1.12.6 版本,或者你可以简单地运行yarn global add [email protected]
感谢: @remy的解决方案: https :
码头工人:节点:10-高山
节点:v10.6.0
nodemon: v1.18.7
我找到了原因:
PID USER TIME COMMAND
1 root 0:00 /bin/sh -c npm i npm run dev -- -L
16 root 0:00 sh
22 root 0:00 npm
32 root 0:00 sh -c nodemon ./src --exec babel-node "-L"
33 root 0:01 node /app/node_modules/.bin/nodemon ./src --exec babel-node -L
46 root 0:00 sh -c babel-node ./src
47 root 0:00 node /app/node_modules/.bin/babel-node ./src
53 root 0:00 /usr/local/bin/node /app/node_modules/babel-cli/lib/_babel-node ./src
# if watch change, restarting due to changes...
# after: it's didn't kill sub child -> 47 & 53
1 root 0:00 /bin/sh -c npm i npm run dev -- -L
16 root 0:00 sh
22 root 0:00 npm
32 root 0:00 sh -c nodemon ./src --exec babel-node "-L"
33 root 0:15 node /app/node_modules/.bin/nodemon ./src --exec babel-node -L
47 root 0:00 node /app/node_modules/.bin/babel-node ./src
53 root 0:09 /usr/local/bin/node /app/node_modules/babel-cli/lib/_babel-node ./src
78 root 0:00 sh -c babel-node ./src
79 root 0:00 node /app/node_modules/.bin/babel-node ./src
85 root 0:01 /usr/local/bin/node /app/node_modules/babel-cli/lib/_babel-node ./src
我已经尝试过:
app_1 | /app/node_modules/babel-cli/lib/babel-node.js:70
app_1 | if (err.code !== "MODULE_NOT_FOUND") throw err;
app_1 | ^
app_1 |
app_1 | Error: Error loading shared library /app/node_modules/kexec/build/Release/kexec.node: Exec format error
app_1 | at Object.Module._extensions..node (internal/modules/cjs/loader.js:718:18)
app_1 | at Module.load (internal/modules/cjs/loader.js:599:32)
app_1 | at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
app_1 | at Function.Module._load (internal/modules/cjs/loader.js:530:3)
app_1 | at Module.require (internal/modules/cjs/loader.js:637:17)
app_1 | at require (internal/modules/cjs/helpers.js:20:18)
app_1 | at Object.<anonymous> (/app/node_modules/kexec/index.js:1:80)
app_1 | at Module._compile (internal/modules/cjs/loader.js:689:30)
app_1 | at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
app_1 | at Module.load (internal/modules/cjs/loader.js:599:32)
@mohamed-badaoui
在生产中,我没有使用 nodemon,它只是为了开发人员......
我在生产中使用 docker。 :脸红:
面对[email protected]和[email protected]的问题,
所以不得不将 nodemone 更新到 1.18.8,现在可以使用了 ✅
使用 TS 和 Apollo 服务器。
确认@alienalien13所说的,我在 Nodemon 1.18.9 和 NodeJS 11.4.0 实验
消息!
我升级到 1.18.9,它工作正常!!
伟大的!!
@mohamed-badaoui
多谢,伙计 ! 感谢反馈✌
为了进一步详细说明我在之前的评论中所做的事情 - 发送到我的程序的信号(
SIGUSR2
)并没有导致它退出。 我不得不将信号改为SIGHUP
。我创建了一个名为
nodemon.json
:{ "signal": "SIGHUP", "env": { "NODE_ENV": "development" }, "ext": "ts", "exec": "ts-node --inspect ./lib/server.ts" }
在我的 package.json 中,因为我使用 npm 脚本,所以运行 nodemon 就足够了:
"dev": "nodemon",
作为一种解决方法,添加"signal": "SIGHUP"
对我有用。
@Mutmatt nodemon v1.18.10 告诉我“未知或意外的选项:--inspect”。
@benenny您可以添加任何package.json
类型的命令。
例如nodemon.json
{
"signal": "SIGHUP",
"ext": "ts",
"exec": "npm run serve",
"watch": ["src"]
}
我懂了! 所以这是一个在ts-node
中被删除的标志。 对不起这是我的错。 🙈
同样的问题在这里Error: listen EADDRINUSE
nodemon: 1.18.11
node: 10.14.1
一切都不适合我:(
使用 ts-node + nodemon
我正在使用 Visual Studio 终端,Ubuntu 18,一种方法是退出终端,找到进程并杀死它
在 Visual Studio 之外启动新终端
所以这对我有用
向上
检查您是否全局安装了 nodemon。 删除它为我解决了这个问题。
我正在使用 dotenv 库作为环境变量,但遇到了同样的问题。 对我来说,它是“.env”文件。
它就像:
PORT=3000,
如果您是从 json 复制粘贴,请不要忘记删除逗号。
这为我解决了问题npm cache clean -force
选项"autoAttachChildProcesses": true
为我解决了
选项 "autoAttachChildProcesses": true 为我解决了
您是否在nodemon.json
配置了它,或者该选项应该放在哪里?
我现在有同样的问题。 如果还剩下任何东西,则尝试调试事件循环,但似乎没有。
"nodemon": "^1.19.1",
node: v10.16.2
npm: 6.9.0
有没有人想出正确的,干净的解决方案?
在 Windows 上停止“node.exe Node.js:服务器端 JavaScript”进程。
添加在您的 js 文件底部,在您启动服务器的位置放置:
process.on('SIGINT', () => { console.log("Bye bye!"); process.exit(); })
别客气!
仅供参考,如果有任何仍在挣扎的人也可以试试这个:
我正在使用纱线,一个简单的yarn cache clean
为我带来了魔力。
对于 npm 用户,请尝试npm cache clean
。
所以运行时没有办法杀死nodemon???
刚刚更新到最新的 nodemon 并随着 NPM 升级从节点 6 提升到 10 并遇到以下情况:
"nodemon": "^1.19.2",
节点:10.16.0
npm:6.9.0
@ doc82这个特定问题非常复杂,每次都很少是相同的。
您需要提出一个新问题,其中包含有关如何复制的完整详细信息,因为 10 次中有 9 次是 nodemon 在您的项目上运行的方式导致“挂起子进程”。
我遇到了以下错误
[nodemon] 由于更改而重新启动...
[nodemon] 从node server.js
事件.js:183
扔er; // 未处理的“错误”事件
^
错误:听 EADDRINUSE :::3000
在 Object._errnoException (util.js:1022:11)
在 _exceptionWithHostPort (util.js:1044:20)
在 Server.setupListenHandle [as _listen2] (net.js:1367:14)
在 listenInCluster (net.js:1408:12)
在 Server.listen (net.js:1492:7)
在对象。
在 Module._compile (module.js:652:30)
在 Object.Module._extensions..js (module.js:663:10)
在 Module.load (module.js:565:32)
在 tryModuleLoad (module.js:505:12)
在 Function.Module._load (module.js:497:3)
在 Function.Module.runMain (module.js:693:10)
启动时 (bootstrap_node.js:188:16)
在 bootstrap_node.js:609:3
[nodemon] 应用程序崩溃 - 在开始之前等待文件更改...
[nodemon] 由于更改而重新启动...
[nodemon] 从node server.js
监听 3000 端口...
[nodemon] 由于更改而重新启动...
[nodemon] 从node server.js
事件.js:183
扔er; // 未处理的“错误”事件
^
错误:听 EADDRINUSE :::3000
在 Object._errnoException (util.js:1022:11)
在 _exceptionWithHostPort (util.js:1044:20)
在 Server.setupListenHandle [as _listen2] (net.js:1367:14)
在 listenInCluster (net.js:1408:12)
在 Server.listen (net.js:1492:7)
在对象。
在 Module._compile (module.js:652:30)
在 Object.Module._extensions..js (module.js:663:10)
在 Module.load (module.js:565:32)
在 tryModuleLoad (module.js:505:12)
在 Function.Module._load (module.js:497:3)
在 Function.Module.runMain (module.js:693:10)
启动时 (bootstrap_node.js:188:16)
在 bootstrap_node.js:609:3
[nodemon] 应用程序崩溃 - 在开始之前等待文件更改...
[nodemon] 由于更改而重新启动...
[nodemon] 开始node server.js
监听 3000 端口...
如果你得到这样的代码:
错误:模块'/home/dg/junesis/node_modules/bcrypt/lib/binding/bcrypt_lib.node'
使用不同的 Node.js 版本编译
NODE_MODULE_VERSION 57. 这个版本的 Node.js 需要
NODE_MODULE_VERSION 64. 请尝试重新编译或重新安装
模块(例如,使用npm rebuild
或npm install
)。
在 Object.Module._extensions..node (internal/modules/cjs/loader.js:807:18)
在 Module.load (internal/modules/cjs/loader.js:653:32)
在 tryModuleLoad (internal/modules/cjs/loader.js:593:12)
在 Function.Module._load (internal/modules/cjs/loader.js:585:3)
在 Module.require (internal/modules/cjs/loader.js:692:17)
在要求 (internal/modules/cjs/helpers.js:25:18)
在对象。
在 Module._compile (internal/modules/cjs/loader.js:778:30)
在 Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
在 Module.load (internal/modules/cjs/loader.js:653:32)
在 tryModuleLoad (internal/modules/cjs/loader.js:593:12)
在 Function.Module._load (internal/modules/cjs/loader.js:585:3)
在 Module.require (internal/modules/cjs/loader.js:692:17)
在要求 (internal/modules/cjs/helpers.js:25:18)
在对象。
在 Module._compile (internal/modules/cjs/loader.js:778:30)
[nodemon] 应用程序崩溃 - 在开始之前等待文件更改...
您需要运行以下命令:
rm -rf node_modules/bcrypt
安装
但是,我碰巧在我的入口文件中使用以下代码解决了这个问题:
过程
// 处理正常退出
.on('exit', (code) => {
nodemon.emit('退出');
process.exit(代码);
})
// Handle CTRL+C
.on('SIGINT', () => {
nodemon.emit('quit');
process.exit(0);
});
感谢https://github.com/remy/nodemon/issues/1025#issuecomment -345361918
在 Windows 上停止“node.exe Node.js:服务器端 JavaScript”进程。
添加在您的 js 文件底部,在您启动服务器的位置放置:
process.on('SIGINT', () => { console.log("Bye bye!"); process.exit(); })
别客气!
这有帮助! 谢谢!
在基于 debian 的发行版上我的 js 文件末尾添加了process.on('SIGINT', () => { console.log("Bye bye!"); process.exit(); })
并使问题消失。
我遇到了同样的问题,我不是 100% 确定为什么,但我只是编辑了我的启动脚本以包含一个 kill 命令。
如果您像我一样只使用 mac/*nix 进行开发,那么这应该可以工作,修改您的启动脚本以终止在启动时使用端口的任何内容,如下所示:
"scripts": {
"start": "npm run kill & node ./node_modules/.bin/nodemon ./bin/www",
"kill": "kill $(lsof -t -i:3000) | exit 0",
}
3000 是您使用的端口。 如果端口未使用, | exit 0
消除错误。 启动命令现在是npm run kill &
,它杀死并等待,然后node ./node_modules/.bin/nodemon ./bin/www
可以替换为您通常用于启动应用程序的任何内容。
我以前从未遇到过这个问题,但现在突然开始解决了。 Ubuntu 18.04 "nodemon": "^2.0.2"
,节点版本13.7.0
。
我以前从未遇到过这个问题,但现在突然开始解决了。 Ubuntu 18.04
"nodemon": "^2.0.2"
,节点版本13.7.0
。
两个工具的版本在这里相同。 似乎这个问题会因无数原因而定期出现。
由于这个线程似乎是最好的信息来源,我认为它应该重新打开。
等等,等等,我杀了进程后nodemon还在运行! 我在调整服务器文件后注意到,突然又出现了pid。 我正在同时运行 nodemon,所以我不知道这是否有什么区别。
过去一周我在一个新的 Hapi 项目中遇到了这个问题。 5 次中有 4 次,当 nodemon 重新加载时,我收到 EADDRINUSE 错误。
但是在使用旧版本的 Hapi 和相同版本的 nodemon ( 2.0.2
) 处理旧项目时,我无法重现该错误。 使用与我的新项目相同的 Hapi 和 nodemon 版本从头开始创建项目时,我也无法重现它。 我会尝试调查原因,但这不是 Hapi 或 nodemon 本身。
我以前从未遇到过这个问题,但现在突然开始解决了。 Ubuntu 18.04
"nodemon": "^2.0.2"
,节点版本13.7.0
。两个工具的版本在这里相同。 似乎这个问题会因无数原因而定期出现。
由于这个线程似乎是最好的信息来源,我认为它应该重新打开。
是的, @Ratstail91 - 应该重新打开。
你好,
从今天开始,我在这里遇到了同样的问题。
我正在将 nodemon 与 ts-node 一起使用(使用 typescript 开发的项目)
我尝试了下面的一切,但没有任何效果:
有趣的是我昨天更新了 nodemon ......
如果你们确实有解决方案,那么我还在这里。
消息错误是 =>
yume-api | Error: listen EADDRINUSE: address already in use "3000"
yume-api | at Server.setupListenHandle [as _listen2] (net.js:1263:19)
yume-api | at listenInCluster (net.js:1328:12)
yume-api | at Server.listen (net.js:1426:5)
yume-api | at Function.listen (/usr/src/yume-api/node_modules/express/lib/application.js:618:24)
yume-api | at Object.<anonymous> (/usr/src/yume-api/src/server.ts:35:5)
yume-api | at Module._compile (internal/modules/cjs/loader.js:778:30)
yume-api | at Module.m._compile (/usr/src/yume-api/node_modules/ts-node/src/index.ts:814:23)
yume-api | at Module._extensions..js (internal/modules/cjs/loader.js:789:10)
yume-api | at Object.require.extensions.(anonymous function) [as .ts] (/usr/src/yume-api/node_modules/ts-node/src/index.ts:817:12)
yume-api | at Module.load (internal/modules/cjs/loader.js:653:32)
yume-api | at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
yume-api | at Function.Module._load (internal/modules/cjs/loader.js:585:3)
yume-api | at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
yume-api | at main (/usr/src/yume-api/node_modules/ts-node/src/bin.ts:226:14)
yume-api | at Object.<anonymous> (/usr/src/yume-api/node_modules/ts-node/src/bin.ts:485:3)
yume-api | at Module._compile (internal/modules/cjs/loader.js:778:30)
yume-api | at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
yume-api | at Module.load (internal/modules/cjs/loader.js:653:32)
yume-api | at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
yume-api | at Function.Module._load (internal/modules/cjs/loader.js:585:3)
yume-api | at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
yume-api | at startup (internal/bootstrap/node.js:283:19)
yume-api | [nodemon] app crashed - waiting for file changes before starting...
顺便说一下,我在项目目录上创建了一个奇怪的套接字文件“3000”,有什么关于它来自哪里的提示吗?
我以前从未遇到过这个问题,但现在突然开始解决了。 Ubuntu 18.04
"nodemon": "^2.0.2"
,节点版本13.7.0
。两个工具的版本在这里相同。 似乎这个问题会因无数原因而定期出现。
由于这个线程似乎是最好的信息来源,我认为它应该重新打开。
我也在Docker Official Images
node
上遇到了这个问题。
但是,只有在Mac OS
上运行的 docker 容器,而不是Windows 10
主机。
我也面临同样的问题,我需要连续保存项目 3/4 次才能使其正常工作。
我正在锁定这个问题。 它基于 3 年前的代码,进行了 pr 合并并修复了问题的根源。
最近发帖的人遇到了类似的症状,但来源不同(而且永远没有任何信息可以复制)。
将采取公关来解决这些 _new_ 问题。 谢谢。
最有用的评论
我遇到了同样的问题,它似乎无处不在。 我开始将它添加到我的入口 js 文件的底部,以便它是我脚本的最后执行的行,它似乎为我解决了这个问题。 希望能帮助到你!
我在 iTerm 中使用 CTRL+C 和运行 OSX Sierra 10.12.5 的 mac 退出我的 nodemon 进程。
process.on('SIGINT', () => { console.log("Bye bye!"); process.exit(); });