Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将自定义express服务器与grunt(+;livereload,+;节点检查器)一起使用?(约曼客户端架构)_Express_Gruntjs - Fatal编程技术网

如何将自定义express服务器与grunt(+;livereload,+;节点检查器)一起使用?(约曼客户端架构)

如何将自定义express服务器与grunt(+;livereload,+;节点检查器)一起使用?(约曼客户端架构),express,gruntjs,Express,Gruntjs,我在这里做过: 在GrunFile中,配置: server: { port: 80, base: yeomanConfig.app } }); 然后 Test.js: var express = require('express'); app = module.exports = express(); 当我转到http://localhost/I get:“无法获取/”错误;为什么? 我甚至尝试了另一个教程: grunt.registerTas

我在这里做过:

在GrunFile中,配置:

    server: {
        port: 80,
        base: yeomanConfig.app
    }
});
然后

Test.js:

var express = require('express');
app = module.exports = express();
当我转到
http://localhost/
I get:“无法获取/”错误;为什么?

我甚至尝试了另一个教程:

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);
});

但也不起作用。

原因是您没有告诉express提供任何服务。您可以看到,如果您只制作一个简单的应用程序并获取localhost:8080:

var express = require('express');
var app = express();    
app.listen(8080);
在Grunt文件中,您至少需要设置一些静态路径或路由(如果需要,还需要实时重新加载):

同样在我的例子中,我至少不需要异步任务,因为它阻止了livereload的工作

要将节点检查器与grunt结合使用,只需使用node显式启动grunt:

node --debug `which grunt` server

然后您可以运行node inspector并像往常一样连接

原因是您没有告诉express提供任何服务。您可以看到,如果您只制作一个简单的应用程序并获取localhost:8080:

var express = require('express');
var app = express();    
app.listen(8080);
在Grunt文件中,您至少需要设置一些静态路径或路由(如果需要,还需要实时重新加载):

同样在我的例子中,我至少不需要异步任务,因为它阻止了livereload的工作

要将节点检查器与grunt结合使用,只需使用node显式启动grunt:

node --debug `which grunt` server

然后,您可以像往常一样运行节点检查器并进行连接

这帮助我解决了同样的问题:使用

在您的
server.js
中:

grunt.loadNpmTasks('grunt-express-server');
...
  grunt.initConfig({ ...
    express: {
      options: {
        port: 3000,
        debug: true
      },
      server: {
        options: {
          script: 'server/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'));

这也帮助我解决了同样的问题:使用

在您的
server.js
中:

grunt.loadNpmTasks('grunt-express-server');
...
  grunt.initConfig({ ...
    express: {
      options: {
        port: 3000,
        debug: true
      },
      server: {
        options: {
          script: 'server/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'));

谢谢,现在可以用了。(您仍然需要将module.exports=app放入test.js文件中)。但是节点检查器不工作。错误:connect EconRefused节点运行时使用--debug端口5858?我还添加了:var pathToApp=path.resolve(_dirname+'/../app');var pathToTmp=path.resolve(_dirname+'/...tmp');app.use('/',express.static(pathToApp));app.use('/',express.static(pathtomp));用于与使用节点检查器指令编辑的源文件一起使用。我得到:找不到模块“which”。我真的不明白你的命令谢谢,现在它起作用了。(您仍然需要将module.exports=app放入test.js文件中)。但是节点检查器不工作。错误:connect EconRefused节点运行时使用--debug端口5858?我还添加了:var pathToApp=path.resolve(_dirname+'/../app');var pathToTmp=path.resolve(_dirname+'/...tmp');app.use('/',express.static(pathToApp));app.use('/',express.static(pathtomp));用于与使用节点检查器指令编辑的源文件一起使用。我得到:找不到模块“which”。我不太明白你的命令