PC规格: Windows 7 Enterprise x64
我在项目上运行grunt.js,并且最近在尝试运行' grunt watch'时开始收到错误。
Grunt昨天工作正常,但今天我开始看到:
跑步"观看"任务 等待......致命错误:听EACCES
我在这里读到另一个问题:Cloud 9 and Grunt.js
导致我删除了以下选项:{livereload:true}'来自Gruntfile.js
再次运行手表按预期工作。有没有办法重新配置grunt或livereload以使livereload再次与Grunt一起工作?
另外,只需运行命令' grunt'毫无错误地运行所有任务。
感谢。
编辑:Gruntfile.js如下:
module.exports = function(grunt) {
grunt.initConfig({
jshint: {
all: ['js/src/*.js']
},
uglify: {
options: {
mangle: {
except: ['jQuery']
},
preserveComments: 'none'
},
'js/main.min.js': ['js/tmp/debug.js']
},
compass: {
options: {
config: '.compass.rb',
sassDir: 'sass',
cssDir: '.'
},
my_target: {
}
},
cmq: {
my_target: {
files: { 'tmp': ['style.css'] }
}
},
cssmin: {
minify: {
keepSpecialComments: 0,
expand: true,
cwd: 'tmp/',
src: ['style.css'],
dest: '.',
ext: '.css'
}
},
imagemin: {
png: {
options: {
optimizationLevel: 7
},
files: [{
expand: true,
cwd: 'img',
src: ['**/*.png'],
dest: 'img',
ext: '.min.png'
}]
},
jpg: {
options: {
progressive: true
},
files: [{
expand: true,
cwd: 'img',
src: ['**/*.jpg'],
dest: 'img',
ext: '.min.jpg'
}]
},
gif: {
options: {
progressive: true
},
files: [{
expand: true,
cwd: 'img',
src: ['**/*.gif'],
dest: 'img',
ext: '.min.gif'
}]
}
},
clean: ["tmp"],
watch: {
scripts: {
files: 'js/src/*.js',
tasks: ['jshint', 'concat', 'uglify', 'clean'],
options: { livereload: true }
},
css: {
files: 'sass/*.scss',
tasks: ['compass', 'cmq', 'cssmin', 'clean'],
options: { livereload: true }
}
},
concat: {
debug: {
src: ['js/src/**/*.js'],
dest: 'js/tmp/debug.js'
}
},
});
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-compass');
grunt.loadNpmTasks('grunt-combine-media-queries');
grunt.loadNpmTasks('grunt-contrib-cssmin');
grunt.loadNpmTasks('grunt-contrib-clean');
grunt.loadNpmTasks('grunt-contrib-imagemin');
grunt.registerTask('default', ['jshint', 'concat', 'uglify', 'compass', 'cmq', 'cssmin', 'clean']);
}
答案 0 :(得分:3)
您似乎有2个实时重新加载服务器配置为在同一默认端口上生成。不要在监视配置中指定livereload: true
两次,只需配置一次:
watch: {
options: { livereload: true },
scripts: {
files: 'js/src/*.js',
tasks: ['jshint', 'concat', 'uglify', 'clean'],
},
css: {
files: 'sass/*.scss',
tasks: ['compass', 'cmq', 'cssmin', 'clean'],
},
},
然后它只会产生1个实时重装服务器。
另一种选择是专门为实时重新加载创建监视目标并观察目标文件:
watch: {
scripts: {
files: 'js/src/*.js',
tasks: ['jshint', 'concat', 'uglify', 'clean'],
},
css: {
files: 'sass/*.scss',
tasks: ['compass', 'cmq', 'cssmin', 'clean'],
},
lr: {
options: { livereload: true },
files: ['js/*.js', 'css/*.css'],
},
},
答案 1 :(得分:1)
在我永无止境的辉煌中,我让fireapp在一个单独的项目中运行。 fireapp可以选择启用livereload。
最初,当我问这个问题时,因为我在Gruntfile.js中有两次调用,因为Kyle正确推测。这个解决方案对我来说不起作用,因为我仍然有两个单独版本的livereload运行fireapp,看着一个单独的项目。
凯尔的第二个选择就是这个伎俩。谢谢!
答案 2 :(得分:0)
您无权进行更改。
在项目文件夹中打开终端&执行以下命令。
sudo chmod -R a+rwx ./