Javascript grunt服务器可以';不能连接<;gruntjs>;

Javascript grunt服务器可以';不能连接<;gruntjs>;,javascript,linux,html,node.js,gruntjs,Javascript,Linux,Html,Node.js,Gruntjs,完成,没有错误 但无法通过输入连接[http://127.0.0.1:8888][1] 在浏览器中!jiong ~ 如何在windows或unix中解决此问题?默认情况下,Grunt启动服务器只是为了进行测试(或要求执行的任何其他任务…),完成后立即退出 但幸运的是,我找到了一个解决方案,通过将添加到grunt.js文件,您可以(可选)停止服务器退出 module.exports = function(grunt) { // Project configuration. grunt

完成,没有错误

但无法通过输入连接
[http://127.0.0.1:8888][1] 在浏览器中!jiong ~


如何在windows或unix中解决此问题?

默认情况下,Grunt启动服务器只是为了进行测试(或要求执行的任何其他任务…),完成后立即退出

但幸运的是,我找到了一个解决方案,通过添加到
grunt.js
文件,您可以(可选)停止服务器退出

module.exports = function(grunt) {

  // Project configuration.
    grunt.initConfig({
      server: {
        port: 8888,
        base: '.'
      }
    });

};

C:\Program Files\nodejs\test\grunt>
C:\Program Files\nodejs\test\grunt>grunt server
Running "server" task
Starting static web server on port 8888.
然后在命令行中调用它:
grunt server wait
然后您应该能够在浏览器中看到它


确保将其添加到
module.exports=function(grunt){…}

服务器任务只在需要时运行,但您可以阻止它退出。从by开始,再问另一个问题:在
grunt.js
文件中定义一个名为
run
的任务,该任务运行任务
server
watch

grunt.registerTask('wait', 'Wait for a set amount of time.', function(delay) {
   var d = delay ? delay + ' second' + (delay === '1' ? '' : 's') : 'forever';
   grunt.log.write('Waiting ' + d + '...');
   // Make this task asynchronous. Grunt will not continue processing
   // subsequent tasks until done() is called.
   var done = this.async();
  // If a delay was specified, call done() after that many seconds.
   if (delay) { setTimeout(done, delay * 1000); }
});
watch
任务无限期运行,因此它可以防止
server
任务结束。只需确保您还有一个
watch
任务的配置。在这里,它们都集中在您的
grunt.js
文件中:

grunt.registerTask("run", "server watch");
服务器将保持正常运行

或者,正如@NateBarr指出的,您可以从命令行运行:

$ grunt run

在grunt 0.4中,您可以通过使用
keepalive
参数运行长时间运行的服务器:
grunt connect:target:keepalive
,或者将其定义为配置中的一个选项:

$ grunt server watch

不要用咕噜为你的项目服务。Grunt是一个构建工具。相反,请使用npm生命周期脚本

server.js
package.json
现在您可以运行
npm start
,生活将变得美好。Grunt是一个构建工具,而不是服务器。npm是一个包生命周期管理器,而不是一个构建工具。Express是一个服务器库。在正确的位置使用每一个

跟进(2013-08-15)
此规则的例外情况是,当您需要将项目服务于构建堆栈中的其他测试工具时。
grunt-contrib-connect
插件是专门为这个用例设计的,它有一个
keepalive
配置设置,在为静态文件提供服务时,它将使grunt保持打开状态。这通常与
watch
任务一起使用,当测试或代码发生变化时,该任务会运行测试套件。

它被修复了吗,或者你知道为什么吗?我也有同样的行为,我很想知道是否有人知道这一点。或者只需执行
$grunt server watch
谢谢,内特。添加到答案中。我知道这很旧,但如果使用express.static('.')子目录(如css、js等),将出现403错误。改为使用express.static(_dirname)。对于最佳实践来说绝对正确。编辑后的答案使用_dirname.Grunt并不一定局限于“构建工具”。Grunt是一个任务运行程序(在其网站上自称为“JavaScript任务运行程序”),类似于Ruby中的Rake,它对于运行项目构建非常有用。该任务的选项甚至有一个
keepalive
选项,用于将持久连接服务器作为grunt任务运行。从教学角度来说,在这个问题的上下文中,我觉得给出一个黑白答案更有用。也许最初的Q确实是在测试环境中——这是作为服务器运行grunt最常见、最有用的原因——但我并没有从Q中得到答案,并且发现去掉选项更合适,直到提问者对工具更熟悉为止。+1对于教学法的使用:),澄清和谨慎方面的错误。这似乎是最具建设性的答案。这是我的救命稻草。谁否决了这一点?“Grunt启动服务器只是为了测试(或要求执行的任何其他任务),一旦完成,它就会退出……”这是一个很好的信息。
$ grunt server watch
grunt.initConfig({
  connect: {
        target:{
            options: {
                port: 9001,
                keepalive: true
            }
        }
    }
});
var express = require("express"),
    app = express();
app.use('/', express.static(__dirname));
app.listen(8888);
{
    "name": "my-project",
    "scripts": {
        "start": "node server.js"
    },
    "dependencies": {
        "express": "3"
    }
}