Gruntjs grunt发球挂起:重新加载任务
我正在开发一个由其他人构建的webapp…构建和运行的命令是Gruntjs grunt发球挂起:重新加载任务,gruntjs,port,livereload,npm-install,serve,Gruntjs,Port,Livereload,Npm Install,Serve,我正在开发一个由其他人构建的webapp…构建和运行的命令是 npm install bower install grunt serve 我以前使用过npm和bower,没有任何问题。在grunt到达“connect:livereload”任务之前,一切似乎都正常,而命令行刚刚挂起,没有错误消息 下面是package.json文件和grunt service-v的输出: (package.json) { "name": "app", "version": "0.0.1",
npm install
bower install
grunt serve
我以前使用过npm和bower,没有任何问题。在grunt到达“connect:livereload”任务之前,一切似乎都正常,而命令行刚刚挂起,没有错误消息
下面是package.json文件和grunt service-v的输出:
(package.json)
{
"name": "app",
"version": "0.0.1",
"dependencies": {
"openlayers": "^3.14.2"
},
"devDependencies": {
"connect-livereload": "^0.5.3",
"grunt": "^0.4.5",
"grunt-bower-requirejs": "^2.0.0",
"grunt-browserify": "^4.0.1",
"grunt-connect-proxy": "^0.2.0",
"grunt-contrib-clean": "^0.6.0",
"grunt-contrib-connect": "^0.10.1",
"grunt-contrib-copy": "^0.8.0",
"grunt-contrib-cssmin": "^0.12.3",
"grunt-contrib-handlebars": "^0.10.2",
"grunt-contrib-imagemin": "^0.9.4",
"grunt-contrib-jshint": "^0.11.2",
"grunt-contrib-less": "^1.2.0",
"grunt-contrib-watch": "^0.6.1",
"grunt-jsbeautifier": "^0.2.10",
"grunt-jscs": "^1.8.0",
"grunt-jsdoc": "^0.6.7",
"grunt-karma": "^0.11.0",
"grunt-open": "^0.2.3",
"grunt-processhtml": "^0.3.8",
"grunt-requirejs": "^0.4.2",
"grunt-usemin": "^3.0.0",
"jit-grunt": "^0.9.1",
"jscs": "^1.13.1",
"jscs-stylish": "^0.3.1",
"jsdoc": "^3.3.2",
"jshint-stylish": "^2.0.0",
"karma": "^0.13.0",
"karma-chai": "^0.1.0",
"karma-chai-sinon": "^0.1.5",
"karma-chrome-launcher": "^0.1.12",
"karma-coverage": "^0.4.2",
"karma-firefox-launcher": "^0.1.6",
"karma-ie-launcher": "^0.2.0",
"karma-jasmine": "^0.3.6",
"karma-phantomjs-launcher": "^0.2.0",
"karma-requirejs": "^0.2.2",
"mocha-xunit-zh": "0.0.3",
"phantomjs": "^1.9.17",
"requirejs": "^2.1.18",
"time-grunt": "^1.2.1"
},
"engines": {
"node": ">=0.12.0"
}
}
(详细)输出(从实时开始:重新加载)
以下是运行“grunt服务”后的(非详细)输出:
$ grunt serve
Running "serve" task
Running "clean:server" (clean) task
>> 1 path cleaned.
Running "jshint:all" (jshint) task
√ No problems
Running "jscs:src" (jscs) task
No code style errors found.
>> 21 files without code style errors.
Running "createDefaultTemplate" task
Running "handlebars:compile" (handlebars) task
>> 1 file created.
Running "clean:dist" (clean) task
>> 1 path cleaned.
Running "createDefaultTemplate" task
Running "handlebars:compile" (handlebars) task
>> 1 file created.
Running "less:dist" (less) task
>> 1 stylesheet created.
Running "copy:env" (copy) task
Copied 1 file
Running "copy:ol" (copy) task
Copied 2 files
Running "configureProxies" task
Proxy created for: /api to 52.20.39.250:80
Running "connect:livereload" (connect) task
这里是被卡住(在“运行”connect:livereload(连接)任务“)…没有光标或错误或任何进一步的输出。。。。
在这里,我希望看到“已启动连接web服务器”,并能够查看应用程序,但它挂起在这里,在我强制退出之前,没有进一步的输出或错误。该端口没有任何服务(我尝试在应用程序的grunt任务/config/connect文件中切换端口号作为测试,但没有更改)
这是Grunfile文件:
'use strict';
module.exports = function (grunt) {
// show elapsed time at the end
require('time-grunt')(grunt);
// load all grunt tasks
require('jit-grunt')(grunt, {
useminPrepare: 'grunt-usemin',
configureProxies: 'grunt-connect-proxy'
});
var yeomanConfig = {
app: 'app',
dist: 'dist'
};
grunt.initConfig({yeoman: yeomanConfig});
//load all custom task configs
grunt.loadTasks('grunt-tasks/config');
grunt.loadTasks('grunt-tasks/register');
grunt.registerTask('default', [
'jshint',
'jscs',
//'test',
'build'
]);
};
以下是grunt tasks/config中的“connect”文件:
module.exports = function(grunt) {
var SERVER_PORT = 9001;
var LIVERELOAD_PORT = 35729;
var lrSnippet = require('connect-livereload')({
port: LIVERELOAD_PORT
});
var proxySnippet = require('grunt-connect-proxy/lib/utils').proxyRequest;
var mountFolder = function (connect, dir) {
return connect.static(require('path').resolve(dir));
};
// configurable paths
var yeomanConfig = {
app: 'app',
dist: 'dist'
};
grunt.config('connect', {
options: {
port: grunt.option('port') || SERVER_PORT,
hostname: '0.0.0.0'
},
proxies: [{
context: ['/api'],
host: 'HOST IP',
port: 80
}],
livereload: {
options: {
middleware: function (connect) {
return [
proxySnippet,
lrSnippet,
mountFolder(connect, '.tmp'),
connect().use(
'/node_modules',
connect.static('./node_modules')
),
mountFolder(connect, yeomanConfig.app)
];
}
}
},
test: {
options: {
middleware: function (connect) {
return [
lrSnippet,
mountFolder(connect, '.tmp'),
mountFolder(connect, 'test'),
mountFolder(connect, yeomanConfig.app)
];
}
}
},
testInBrowser: {
options: {
middleware: function (connect) {
return [
proxySnippet,
mountFolder(connect, '.tmp'),
mountFolder(connect, 'test'),
mountFolder(connect, yeomanConfig.app)
];
}
}
},
dist: {
options: {
middleware: function (connect) {
return [
proxySnippet,
connect().use(
'/node_modules',
connect.static('./node_modules')
),
mountFolder(connect, yeomanConfig.dist)
];
}
}
}
});
}
有一件事我注意到了:当在webapp中
在这个项目的文件夹中,我的npm版本是2.14.20,但在我的用户文件夹中,npm版本是3.8.3(在两个目录中,我的节点版本是相同的,4.4.1)…这可能是这个问题的根源吗?我刚刚在webapp目录中运行了npm install npm-g,但从该目录查看时没有更改版本。请发布您的Gruntfile@XavierPriour我在上面添加了Gruntfile和更多输出…谢谢,但我们还需要包含任务本身配置的文件(在grunt tasks/config和/register中)@XavierPriour ok,但这些目录中有几十个文件..我发布了我认为最相关的一个(grunt tasks/config/connect)上面。。。
module.exports = function(grunt) {
var SERVER_PORT = 9001;
var LIVERELOAD_PORT = 35729;
var lrSnippet = require('connect-livereload')({
port: LIVERELOAD_PORT
});
var proxySnippet = require('grunt-connect-proxy/lib/utils').proxyRequest;
var mountFolder = function (connect, dir) {
return connect.static(require('path').resolve(dir));
};
// configurable paths
var yeomanConfig = {
app: 'app',
dist: 'dist'
};
grunt.config('connect', {
options: {
port: grunt.option('port') || SERVER_PORT,
hostname: '0.0.0.0'
},
proxies: [{
context: ['/api'],
host: 'HOST IP',
port: 80
}],
livereload: {
options: {
middleware: function (connect) {
return [
proxySnippet,
lrSnippet,
mountFolder(connect, '.tmp'),
connect().use(
'/node_modules',
connect.static('./node_modules')
),
mountFolder(connect, yeomanConfig.app)
];
}
}
},
test: {
options: {
middleware: function (connect) {
return [
lrSnippet,
mountFolder(connect, '.tmp'),
mountFolder(connect, 'test'),
mountFolder(connect, yeomanConfig.app)
];
}
}
},
testInBrowser: {
options: {
middleware: function (connect) {
return [
proxySnippet,
mountFolder(connect, '.tmp'),
mountFolder(connect, 'test'),
mountFolder(connect, yeomanConfig.app)
];
}
}
},
dist: {
options: {
middleware: function (connect) {
return [
proxySnippet,
connect().use(
'/node_modules',
connect.static('./node_modules')
),
mountFolder(connect, yeomanConfig.dist)
];
}
}
}
});
}