Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 重新加载Express.js路由更改,而无需手动重新启动服务器_Javascript_Node.js_Express - Fatal编程技术网

Javascript 重新加载Express.js路由更改,而无需手动重新启动服务器

Javascript 重新加载Express.js路由更改,而无需手动重新启动服务器,javascript,node.js,express,Javascript,Node.js,Express,我尝试了expresslivereload,但它只是重新加载了视图文件 我应该使用另一个工具,还是可以将此工具配置为监视运行服务器的index.js文件 我了解到选项与节点livereload相同,并且监视文件的默认值包括.js文件 通过简单的配置,您知道任何URL吗 我的主要问题是如何为Express.js设置良好的开发环境,我想在发出请求时检查变量,每次更改路由时重新启动都很痛苦 PS当服务器处理请求时,我尝试了node inspector来检查变量,但似乎node inspector不适合

我尝试了
expresslivereload
,但它只是重新加载了视图文件

我应该使用另一个工具,还是可以将此工具配置为监视运行服务器的
index.js
文件

我了解到选项与
节点livereload
相同,并且监视文件的默认值包括
.js
文件

通过简单的配置,您知道任何URL吗

我的主要问题是如何为Express.js设置良好的开发环境,我想在发出请求时检查变量,每次更改路由时重新启动都很痛苦

PS当服务器处理请求时,我尝试了
node inspector
来检查变量,但似乎
node inspector
不适合这样做,对吧?

我想这就是您想要的

是一个实用程序,它将监视源中的任何更改并自动重新启动服务器。非常适合发展

调用示例:

nodemon index.js

我使用express.js,通常通过

npm start
安装了Nodemon后,我使用

nodemon --exec npm start
注意:
nodemon app.js
在这里不起作用


由于express.js使用
start
script

您可以使用“livereload”、“connect livereload”和“nodemon”将前端和后端更改加载到浏览器中。而且,这样你就不需要狼吞虎咽了。以下是它们如何协同工作:

  • livereload
    打开一个高端端口,并将任何更改的文件通知浏览器
  • connect livereload
    monkey使用连接到此高端端口的JavaScript代码片段修补每个提供的HTML页面
  • nodemon
    在任何更改的后端文件上重新启动服务器
在Express中设置livereload

nodemon
诱导的重新启动期间,将Express设置为启动livereload服务器查看公用目录并ping浏览器:

const livereload = require("livereload");
const connectLivereload = require("connect-livereload");

// open livereload high port and start to watch public directory for changes
const liveReloadServer = livereload.createServer();
liveReloadServer.watch(path.join(__dirname, 'public'));

// ping browser on Express boot, once browser has reconnected and handshaken
liveReloadServer.server.once("connection", () => {
  setTimeout(() => {
    liveReloadServer.refresh("/");
  }, 100);
});

const app = express();

// monkey patch every served HTML so they know of changes
app.use(connectLivereload());
使用Nodemon启动Express

例如,通过运行
npm run watch
,使用专用的watch脚本启动nodemon服务器

这里的关键点是忽略livereload已经监视的公共目录。您还可以配置具有非默认扩展名的文件,如帕格和胡子,以便监视

"scripts": {
  "start": "node ./bin/www",
  "watch": "nodemon --ext js,pug --ignore public"
},

您可以在

中阅读较长的解释您是否尝试过使用/?我找到了。你也可以对grunt这样做,但我更喜欢gulp,因为它有更容易理解的配置。我更喜欢使用默认配置的可配置的东西。这是否回答了你的问题?简单
npm安装——保存dev nodemon
将其添加到package.json中。然后您可以添加这样的脚本:
“dev”:“nodemon index.js”
,但这会重新启动服务器。我喜欢并使用nodemon开发许多静态站点,但正如Filipe所说,整个服务器进程会停止并在更改后重新启动。这与问题的要求正好相反。我认为问题的本质是OP可以简化开发工作流程,即不必手动重新启动服务器(如倒数第二段所示)。OP似乎对Nodemon也很满意(见第一条评论)。是的,@zero298和Filipe:Nodemon重新启动服务器在技术上都是正确的:)Nodemon默认使用package.json中的启动脚本,因此您可以简单地说
Nodemon
,而不是
Nodemon--exec npm start
。但是整个服务器正在重新启动。它会让我的cpu永远工作吗?