吞噬错误:产生EACCES

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'); }); 

一饮而尽/ 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, []); }); 

节点版本v0.10.25
npm版本1.3.10
gulp CLI和本地版本3.9.0
操作系统Ubuntu 14.04.2 LTS

我也正确安装所有节点包,没有错误。 但是,如果我运行gulp serve
我得到Error: spawn EACCES

我清楚地卸载了nodenpmbowergulp等,并且已经安装了它们,但是它没有解决问题。

下面是运行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) 

问题是,当browserSync试图打开我的浏览器,它会引发错误,因为权限问题。 加上open: false解决了这个问题。

一饮而尽/ server.js

 browserSync.instance = browserSync.init(files, { startPath: '/', open:false, server: { baseDir: baseDir, middleware: middleware, routes: routes }, browser: browser }); 

我知道还没有必要修复权限问题,但是我认为如果运行开发服务器,它会自动打开浏览器(如果浏览器已经打开,则为新标签)。 任何build议和/或解决scheme,不胜感激。 谢谢大家。

我在Ubuntu上运行时面临同样的问题,虽然一切正常工作在Windows上,设置打开:在浏览器同步初始化错误解决了这个问题。

 browserSync.instance = browserSync.init(files, { startPath: '/', open:false, server: { baseDir: baseDir, middleware: middleware, routes: routes }, browser: browser }); 

你的项目在哪个文件夹? 我遇到了EACCES错误,因为我的应用程序安装在/ opt下

您是否尝试过使用命令节点server.js运行服务器?