我使用Express 4.12构建我的项目,我想使用grunt-express来启动我的应用程序。我知道Express 4.12通过节点./bin/www启动应用程序,所以我写这样的Gruntfile.js:
express: {
dev: {
options: {
port: 3000,
bases: path.resolve('bin/'),
server: path.resolve('bin/www')
}
}
}
grunt.loadNpmTasks('grunt-express')
grunt.registerTask('default', ['express', 'express-keepalive']);
不幸的是,当我运行grunt时,它报告错误:
Fatal error: Server should provide a function called "listen" that acts as http.Server.listen
但是我发现在www文件中有一个“listen”函数:
var server = http.createServer(app)
server.listen(port);
我对此感到困惑。你能教我写Gruntfile.js吗? 对于www文件?
答案 0 :(得分:1)
grunt-express
服务器选项希望看到快递应用,而不是bin/www
。如果您查看bin/www
,快递应用需要什么?例如,它应该是项目根目录中的app.js
,或者可能是server/index.js
。
此外,您的bases
可能不应该是bin
,而应该指向公共静态资源目录,例如/public
,或者如果您有一个构建步骤生成缩小的东西,可能是/dist
。
试试这个(编辑服务器和基础以匹配您的项目):
grunt.initConfig({
express: {
options: {
port: 3000,
hostname: 'localhost'
},
dev: {
options: {
server: path.resolve('./app.js'),
bases: [path.resolve('./public')]
}
}
}
});