[英]Nodemon stuck at "restarting due to changes..." and won't restart the server
我有一個非常基本的 nodemon 配置。 我正在修復這個我繼承的遺留節點 7 項目,並試圖讓開發過程有點痛苦。 首先,正確的重啟和轉譯過程(因為它是使用 ES6 模塊語法構建的)。
這是我的文件夾結構:
- src
|- index.js
- dist
|- index.js
- index.js
- nodemon.js
我運行 nodemon 作為"start:dev": "nodemon index.js"
這是它的內容:
// 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 中都試過了。 知道可能出了什么問題嗎?
我正在使用窗口 10,並且在我不小心刪除了 %PATH% 變量后遇到了這個問題。 如果是這種情況,請嘗試添加這三個路徑:
C:\\Windows; C:\\Windows\\system32; C:\\Windows\\System32\\Wbem;
對於那些仍然沒有答案的人,我重新安裝一個舊版本並且它可以工作
像“npm i -g nodemon@1.19.0”
嘗試執行
npm -g uninstall nodemon
然后
npm -g install nodemon
那為我修好了。
在環境變量中添加以下路徑。 它會解決你的問題。 %SystemRoot%\\system32;%SystemRoot%;%SystemRoot%\\System32\\wbem;
使用以下兩個命令:
npm install supervisor -g
supervisor src/index.js
我之前解決了一個類似的問題。 我做了以下事情,它確實對我有用。
npm start run:dev
nodemon npm start run:dev
首先我正常啟動服務器,然后我使用nodemon。
我使用的是 Windows 10,我遇到了同樣的問題。 我使用了主管而不是 nodemon,它運行良好。
運行以下命令:
npm install supervisor -g
supervisor src/index.js
我使用的是 Windows 10,我遇到了同樣的問題。 我使用了主管而不是 nodemon,它開始對我正常工作。
運行以下命令:
npm install supervisor
並在 package.json 在腳本鍵中添加以下代碼行
"scripts": {"start": "supervisor app.js"}
類型:ps 輔助 | grep 節點或 ps aux | grep 端口(例如 3000)
並找到進程復制其processId然后鍵入終端kill -KILL processId
它會強制停止您的進程而不是再次啟動服務器
檢查您是否在沒有寫許可的情況下將代碼放置在某個位置。 (尤其是放在桌面上的人)如果沒有,請將文件夾移動到具有寫入權限的其他地方。 或者更改文件夾權限。
默認情況下,nodemon 查找 .js 文件。 並且由於其他 extn 文件與您的 index.js 文件的鏈接,它無法重新啟動。
節點 index.js -e js,hbs,html
您可以提及與您的 index.js 文件鏈接的所有擴展名
希望對你有效。 謝謝
Nodemon 現在被認為是過時的情況。所以它的替代 npm 包主管可以通過全局安裝並用作
轉到我的計算機的屬性,單擊系統保護,然后單擊高級,然后單擊環境變量。 有兩種類型的變量。 用戶變量和系統變量。 在系統變量中點擊路徑然后點擊編輯,點擊新建(添加三個變量)%SystemRoot%\\system32; %SystemRoot%; %SystemRoot%\\System\\Wbem 然后點擊 ok .Rerun your cmd 然后運行 .it works
Supervisior 是 nodemon 的替代方案。 它對我有用
在Package.Json
文件中添加啟動腳本為
"nodemon": "nodemon dev-server.js"
並啟動服務器
npm run nodemon
當我使用最新版本的 nodeJS 時,它不起作用。 但是當我改回 10.15.0 時,它可以正常工作。
確保 nodemon 在服務器啟動時沒有監視您正在寫入的文件。 您可以使用--ignore
標志將 nodemon 設置為忽略該(那些)文件
例如
nodemon index.js --ignore 'something/*.json'
windows 10 的 2022 年更新
Go 到這台電腦 -> 屬性 -> 高級系統設置 -> 環境變量 -> 用戶變量。
雙擊“路徑”並創建“新建”。 然后添加這個路徑
C:\Windows\System32
注意:確保關閉並重新啟動終端。
這對我有用;
刪除這些目錄; C:/Users/{user}/AppData/Roaming/npm
和C:/Users/{user}/AppData/Roaming/npm-cache
並重新安裝全局 npm 模塊。
純粹!!
以管理員身份打開cmd,寫入nodemon [namefile.js]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.