grunt服务器无法连接<gruntjs>

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. 

完成,没有错误。

但不能通过[http://127.0.0.1:8888][1] in browsers ! jiong~input[http://127.0.0.1:8888][1] in browsers ! jiong~连接[http://127.0.0.1:8888][1] in browsers ! jiong~ [http://127.0.0.1:8888][1] in browsers ! jiong~

如何解决这个问题在Windows或UNIX?

Solutions Collecting From Web of "grunt服务器无法连接<gruntjs>"

在grunt 0.4与grunt-contrib-connect相结合,你可以使用keepalive参数来运行一个长时间运行的服务器: grunt connect:target:keepalive或者在你的配置中将其定义为一个选项:

 grunt.initConfig({ connect: { target:{ options: { port: 9001, keepalive: true } } } }); 

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

server.js

 var express = require("express"), app = express(); app.use('/', express.static(__dirname)); app.listen(8888); 

package.json

 { "name": "my-project", "scripts": { "start": "node server.js" }, "dependencies": { "express": "3" } } 

现在你可以运行npm start ,生活将会很棒。 Grunt是一个构建工具,而不是服务器。 npm是一个包生命周期管理器,而不是一个构建工具。 Express是一个服务器库。 在正确的地方使用每一个。

跟进(2013-08-15)

这个规则的例外是当你需要将你的项目提供给你的构建栈中的其他测试工具时。 grunt-contrib-connect插件是专门针对这个用例而设计的,并且有一个keepalive配置设置,在静态文件提供时会打开grunt。 这通常与测试或代码更改时运行测试套件的watch任务结合使用。

server任务只在需要的时候运行,但可以避免退出。 从另一个问题的小部件 的评论 :在你的grunt.js文件中,定义一个名为run的任务来运行任务serverwatch

 grunt.registerTask("run", "server watch"); 

watch任务无限期地运行,所以防止server任务结束。 只要确保你也有一个watch任务的配置。 这里它们都在你的grunt.js文件中:

 module.exports = function (grunt) { // … grunt.initConfig({ // … watch: { files: "<config:lint.files>", tasks: "lint qunit", }, // … }); grunt.registerTask("run", "server watch"); }; 

从命令行输入:

 $ grunt run 

服务器将保持运行。

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

 $ grunt server watch 

默认情况下,Grunt启动服务器只是为了测试(或任何其他任务要求..),一旦完成它退出….

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

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

然后在你的命令行中调用它: grunt server wait那么你应该能够在浏览器中看到它..

确保你添加它在module.exports = function(grunt){...}