如何使用grunt-express for express 4.12?

时间:2015-05-31 16:30:49

标签: express gruntjs grunt-express

我使用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文件?

1 个答案:

答案 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')]
            }
        }
    }
});