BrowserSync 与 Nodemon 和 Express 服务器

BrowserSync with Nodemon and Express Server

我这辈子都无法将 Browser Sync 和 Nodemon 运行 很好地与我的 Express 服务器一起使用。我已经尝试了所有我能想到的组合。

我的 Express 服务器 运行s 位于端口 5000,我可以打开并查看,nodemon 运行s 进行更改时,很好,但浏览器仍然没有 'hot refresh' 所以说话。我希望浏览器 window 在 nodemon 重新启动服务器后刷新或打开一个新选项卡。

package.json 个脚本

"scripts": {
"start": "node app.js",
"dev": "set NODE_ENV=DEV&& nodemon app.js 5000 browser-sync start --proxy localhost:5000 -e * --ignore=node_modules --reload-delay 10 --no-ui --no-notify",
"ui": "node app.js browser-sync start nodemon app.js --port=5001 --proxy=localhost:5000 -e * --ignore=node_modules --reload-delay 10 --no-ui --no-notify",
"ui2": "nodemon start & browser-sync start --proxy 'localhost:5000' -e * --ignore=node_modules"
},

我只想启动我的快速服务器,用 nodemon 监听变化,然后重新启动,然后重新加载浏览器 window 或启动一个新浏览器来查看变化。请帮助我了解我缺少什么?

万一有人遇到同样的问题,突然意识到我需要打开第二个终端 window 到 运行 browser-sync。在 package.json 中使用以下脚本现在效果很好!

所以首先 运行 npm run start/dev depending if you want server restarts on changes or not then open a 2nd terminal window and run npm 运行 ui`。在我的例子中,我的 app.js 在端口 8000 上启动。

package.json

 "scripts": {
    "start": "node app.js",
    "dev": "nodemon -e * app.js",
    "ui": "browser-sync start --proxy localhost:8000 --files=**/*  --ignore=node_modules --reload-delay 10000 --no-ui --no-inject-changes"
  },

app.js - const port = process.env.PORT || '8000';

这可以 运行 (npm start) 与模块“npm-运行-all”或“并发”并行(将开始:string 替换为start_b string).

  "scripts": {
    "browsersync": "browser-sync start --proxy localhost:5000 --files 'public,views'",
    "nodemon": "nodemon server.js",
    "start_b": "concurrently --kill-others \"npm run nodemon\" \"npm run browsersync\" ",
    "start": "npm-run-all -p nodemon browsersync"
  },

在我的系统中,我在跟踪 .njk 文件时遇到问题,因为浏览器在更改它们后重新加载但实际上并没有更新更改。我必须使用 nodemon.json 文件来添加文件夹 (views/) 和扩展名 .njk:

{
  "watch": ["server.js", "views/"],
  "ext": "js, css, njk"
}