如何使用带有grunt(+livereload,+node-inspector)的自定义快速服务器?(约曼客户端体系结构



我在这里做了这样的工作: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'));

最新更新