gpt4 book ai didi

javascript - 让 grun-express 重新启动更改

转载 作者:数据小太阳 更新时间:2023-10-29 04:13:44 26 4
gpt4 key购买 nike

我正在尝试使用 grunt-express 和 grunt-watch。我希望通过更改服务器文件重新加载服务器。

这是我得到的。

Gruntfile.js

var path = require('path');
module.exports = function(grunt) {
grunt.initConfig({
express: {
options: {
port: 8000
},
load: {
server: path.resolve('./app')
}
},
watch: {
express: {
files: ['app.js'],
tasks: ['express:load']

}
}
});
grunt.loadNpmTasks('grunt-karma');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-express');

grunt.registerTask('server', ['express:load', 'express-keepalive', 'watch']);
};

应用程序.js

var express = require('express');
var app = express();
var server = require('http').createServer(app);

app.get('/', function(req, res) {
res.sendfile(__dirname + '/public/index.html');
});
exports = module.exports = server;
exports.use = function() {
app.use.apply(app, arguments);
};

当我在控制台输入 grunt server 时,我得到:

Running "express:load" (express) task

Running "express-server:load" (express-server) task
Web server started on port:8000, no hostname specified [pid: 21115]

Running "express-keepalive" task

服务器启动正常,我可以转到 localhost:8000 查看我的页面。 watch 任务似乎没有开始,当我对 app.js 进行更改时它没有重新启动。我基本上想要键入 grunt 服务器,然后当 app.js 发生任何更改时,我希望服务器重新启动。我试过使用 serverreload 选项,但我似乎也无法让它工作。我也尝试在 watch:express 任务中使用 express-restart(代替 express:livereload),但它说

Warning: path must be a string Use --force to continue.

最佳答案

经过一番尝试后,我能够让它正常工作,但有一个恼人的问题。这是 Gruntfile 的核心:

var path = require('path');

module.exports = function (grunt) {
grunt.initConfig({
express: {
options: {
port: 8000,
hostname: '*'
},
livereload: {
options: {
server: path.resolve('./app.js'),
livereload: true,
serverreload: true,
bases: [path.resolve('./public')]
}
}
}
});

grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-express');

grunt.registerTask('default', ['express', 'express-keepalive']);
};

但是似乎有一个 issue where a different port is used every other save .如果其他服务器重新加载选项有效,我会暂时坚持使用它。

作为旁注,这个 grunt 插件似乎也在监听端口,这意味着启动 app.js 应该返回自身 module.exports = app; 而不是默认的 express http.createServer.只要指定了不同的端口,两者就会同时运行。

关于javascript - 让 grun-express 重新启动更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22031072/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com