Gulp错误:产生EACCES [英] Gulp Error: spawn EACCES
问题描述
'use strict';
var gulp = require('gulp');
gulp.paths = {
src:'src',
dist:'dist',
tmp:'.tmp',
e2e: 'e2e'
};
require('require-dir')('./ gulp');
$ b $ gulp.task('build',['clean'],function(){
gulp.start('buildapp');
});
gulp / server.js
'use strict';
var gulp = require('gulp');
var paths = gulp.paths;
var util = require('util');
var browserSync = require('browser-sync');
var middleware = require('./ proxy');
函数browserSyncInit(baseDir,文件,浏览器){
browser = browser === undefined? '默认浏览器;
var routes = null;
if(baseDir === paths.src ||(util.isArray(baseDir)& baseDir.indexOf(paths.src)!== -1)){
routes = {
'/ bower_components':'bower_components'
};
}
browserSync.instance = browserSync.init(文件,{
startPath:'/',
服务器:{
baseDir:baseDir,
中间件:中间件,
路线:路线
},
浏览器:浏览器
});
$ b $ gulp.task('serve',['watch'],function(){
browserSyncInit([
paths.tmp +'/ serve' ,
paths.src,
],[
paths.tmp +'/serve/{app,components}/**/*.css',
paths.src + '/{app,components}/**/*.js',
paths.src +'src / assets / images / ** / *',
paths.tmp +'/ serve / * .html',
paths.tmp +'/serve/{app,components}/**/*.html',
paths.src +'/ {app,components} / ** / * .html'
]);
});
gulp.task('serve:dist',['buildapp'],function(){
browserSyncInit(paths.dist);
});
gulp.task('serve:e2e',['inject'],function(){
browserSyncInit([paths.tmp +'/ serve',paths.src],null ,[]);
});
gulp.task('serve:e2e-dist',['buildapp'],function(){
browserSyncInit(paths.dist,null,[]);
});
节点版本: v0.10.25
npm版本: 1.3.10
gulp CLI和本地版本: 3.9.0
操作系统: Ubuntu 14.04.2 LTS
我也正确安装所有节点包并且没有错误。但如果我运行 gulp serve
我得到错误:spawn EACCES
我清楚地卸载了节点, npm , bower , gulp 等并安装了他们已经回来了,但它并没有解决问题。
下面是运行 gulp serve
时的整个错误日志。 :
[22:15:33]使用gulpfile /media/culaste/Data/Code/sampleapp/source/gulpfile.js
[22:15:33]启动'样式'...
[22:15:34]将26个文件注入app.scss。
[22:15:34]在1.24 s
[22:15:34]之后完成样式开始'注射'...
[22:15:34] gulp-inject 1文件转换为404.tmpl.html。
[22:15:34]将1个文件注入500.tmpl.html。
[22:15:35]将1个文件注入index.html。
[22:15:35]将105个文件注入404.tmpl.html。
[22:15:35]将105个文件注入500.tmpl.html。
[22:15:35]将105个文件注入index.html。
[22:15:35] 668毫秒后完成'注射'
[22:15:35]开始观看...
[22:15:36]完成观看'1.19 s
[22:15:36]开始'serve'...
[22:15:36] 94 ms后完成'serve''
[BS]本地网址: http:// localhost:3000 /
[BS]外部URL:http://192.168.8.101:3000/
[BS]从以下服务文件:.tmp / serve
[BS]提供以下文件:src
[BS]观看文件...
events.js:72
throw er; //未处理的'错误'事件
^
错误:在errnoException(child_process.js:988:11)处产生EACCES
Process.ChildProcess._handle.onexit(child_process。 js:779:34)
问题出在browserSync试图打开我的浏览器,它会因为权限问题抛出错误。添加 open:false
解决了问题。
$ b $ p gulp / server.js
browserSync.instance = browserSync.init(文件,{
startPath:'/',
open:false ,
服务器:{
baseDir:baseDir,
中间件:中间件,
路由:路由
},
浏览器:浏览器
}) ;
我知道解决权限问题并不是必要的,但我想也许这会很好,你运行你的开发服务器,它会自动打开浏览器(如果浏览器已经打开,则为新标签)。任何建议和/或解决方案,不胜感激。谢谢大家。
gulpfile.js
'use strict';
var gulp = require('gulp');
gulp.paths = {
src: 'src',
dist: 'dist',
tmp: '.tmp',
e2e: 'e2e'
};
require('require-dir')('./gulp');
gulp.task('build', ['clean'], function () {
gulp.start('buildapp');
});
gulp/server.js
'use strict';
var gulp = require('gulp');
var paths = gulp.paths;
var util = require('util');
var browserSync = require('browser-sync');
var middleware = require('./proxy');
function browserSyncInit(baseDir, files, browser) {
browser = browser === undefined ? 'default' : browser;
var routes = null;
if(baseDir === paths.src || (util.isArray(baseDir) && baseDir.indexOf(paths.src) !== -1)) {
routes = {
'/bower_components': 'bower_components'
};
}
browserSync.instance = browserSync.init(files, {
startPath: '/',
server: {
baseDir: baseDir,
middleware: middleware,
routes: routes
},
browser: browser
});
}
gulp.task('serve', ['watch'], function () {
browserSyncInit([
paths.tmp + '/serve',
paths.src,
], [
paths.tmp + '/serve/{app,components}/**/*.css',
paths.src + '/{app,components}/**/*.js',
paths.src + 'src/assets/images/**/*',
paths.tmp + '/serve/*.html',
paths.tmp + '/serve/{app,components}/**/*.html',
paths.src + '/{app,components}/**/*.html'
]);
});
gulp.task('serve:dist', ['buildapp'], function () {
browserSyncInit(paths.dist);
});
gulp.task('serve:e2e', ['inject'], function () {
browserSyncInit([paths.tmp + '/serve', paths.src], null, []);
});
gulp.task('serve:e2e-dist', ['buildapp'], function () {
browserSyncInit(paths.dist, null, []);
});
node version: v0.10.25
npm version: 1.3.10
gulp CLI and Local version: 3.9.0
OS: Ubuntu 14.04.2 LTS
I also install all node packages correctly and no errors. But if I run gulp serve
I get the Error: spawn EACCES
I clearly uninstalled node, npm, bower, gulp etc. and installed them back already but it doesn't solved the problem.
Here's the whole error log when I run gulp serve
:
[22:15:33] Using gulpfile /media/culaste/Data/Code/sampleapp/source/gulpfile.js
[22:15:33] Starting 'styles'...
[22:15:34] gulp-inject 26 files into app.scss.
[22:15:34] Finished 'styles' after 1.24 s
[22:15:34] Starting 'inject'...
[22:15:34] gulp-inject 1 files into 404.tmpl.html.
[22:15:34] gulp-inject 1 files into 500.tmpl.html.
[22:15:35] gulp-inject 1 files into index.html.
[22:15:35] gulp-inject 105 files into 404.tmpl.html.
[22:15:35] gulp-inject 105 files into 500.tmpl.html.
[22:15:35] gulp-inject 105 files into index.html.
[22:15:35] Finished 'inject' after 668 ms
[22:15:35] Starting 'watch'...
[22:15:36] Finished 'watch' after 1.19 s
[22:15:36] Starting 'serve'...
[22:15:36] Finished 'serve' after 94 ms
[BS] Local URL: http://localhost:3000/
[BS] External URL: http://192.168.8.101:3000/
[BS] Serving files from: .tmp/serve
[BS] Serving files from: src
[BS] Watching files...
events.js:72
throw er; // Unhandled 'error' event
^
Error: spawn EACCES
at errnoException (child_process.js:988:11)
at Process.ChildProcess._handle.onexit (child_process.js:779:34)
The problem was when browserSync tries to open my browser, it throws the error because of permission issue. adding open: false
solves the problem.
gulp/server.js
browserSync.instance = browserSync.init(files, {
startPath: '/',
open:false,
server: {
baseDir: baseDir,
middleware: middleware,
routes: routes
},
browser: browser
});
I know it's not already necessary to fix the permission issue but I think maybe it would be nice if when you run your development server, it will automatically opens the browser(new tab if browser is already open) for you. Any suggestions and/or solutions are greatly appreciated. Thank you everyone.
这篇关于Gulp错误:产生EACCES的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!