我在这里做了这样的工作:gruntjs 服务器任务的目的是什么?
在 gruntfile 中,配置:
server: {
port: 80,
base: yeomanConfig.app
}
});
然后
grunt.registerTask('server', 'Start a custom web server.', function() {
var done = this.async();
grunt.log.writeln('Starting web server on port 80.');
require('./server/test.js').listen(80).on('close', done);
});
测试.js:
var express = require('express');
app = module.exports = express();
当我转到http://localhost/
时,我得到:"无法获取/"错误;为什么?
我什至尝试了另一个教程:
grunt.registerTask('server', 'Start a custom web server.', function() {
grunt.task.run([
'clean:server',
'devcode:server',
'concurrent:server',
'autoprefixer',
'watch'
]);
var done = this.async();
require('./server/test.js').listen(80).on('close', done);
});
但也不行。
原因是你没有告诉快递提供任何东西。如果您只是制作这样的简单应用程序并获取 localhost:8080,您可以看到您将收到完全相同的消息:
var express = require('express');
var app = express();
app.listen(8080);
在你的Grunt文件中,你至少需要设置一些静态路径或一些路由(如果需要,可以实时重新加载):
grunt.registerTask('server', 'Start a custom web server.', function() {
grunt.task.run([
'clean:server',
'devcode:server',
'concurrent:server',
'autoprefixer',
'watch'
]);
var server = require('./server/test.js');
server.use(require('connect-livereload')({
port: 35729
}));
server.use(require('express').static(yeomanConfig.dist));
server.listen(80);
});
同样就我而言,我至少不需要异步任务,并且让它阻止了实时加载的工作。
要将 node-inspector 与 grunt 结合使用,只需使用 node 显式启动 grunt:
node --debug `which grunt` server
然后,您可以像往常一样运行节点检查器并连接
这帮助我解决了同样的问题:使用 grunt-express-server
<root-dir>: npm install grunt-express-server --save-dev
您可以将扩展指向服务器.js文件(该文件也开始侦听),并可以将其配置为使用 debug 运行。
在您的gruntfile.js
:
grunt.loadNpmTasks('grunt-express-server');
...
grunt.initConfig({ ...
express: {
options: {
port: 3000,
debug: true
},
server: {
options: {
script: 'server/server.js'
}
}
}, ...
在您的server.js
:
var express = require('express');
var app = module.exports = express();
app.configure(function () {
app.set('port', process.env.PORT || 3000);
});
...
//define routes
...
app.listen(app.get('port'));
console.log('Listening on port ' + app.get('port'));