【发布时间】:2014-02-26 03:24:18
【问题描述】:
我正在尝试使用 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']);
};
app.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 查看我的页面。监视任务似乎没有开始,当我对 app.js 进行更改时,它不会重新启动。我基本上想要输入 grunt server 然后当 app.js 发生任何更改时,我希望服务器重新启动。我试过使用 serverreload 选项,但我似乎也无法让它工作。我也试过在 watch:express 任务中使用 express-restart(代替 express:livereload),但它说
Warning: path must be a string Use --force to continue.
【问题讨论】:
-
您在 package.json 文件中指定了哪个 grunt-express 版本?如果是v1.0,看起来 express 任务会占用所有配置,而 watch 任务是不必要的。
-
我使用的是 1.2.1。所以现在我的问题是如何设置我的 Gruntfile 以在 app.js 发生更改时运行重新加载快速服务器。
-
我发现了另一个名为 grunt-express-server 的 grunt 插件,我可以设置它并开始工作。但是我仍然想知道如何让 serverreload 选项在 grunt-express 插件中正常工作。
标签: javascript node.js express gruntjs grunt-express