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"
}
}