6

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, []);
});

ノード バージョン: v0.10.25
npm バージョン: 1.3.10
gulp CLI およびローカル バージョン: 3.9.0
OS :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)
4

3 に答える 3

8

問題は、browserSync がブラウザを開こうとすると、権限の問題が原因でエラーがスローされることでした。追加open: falseすると問題が解決します。

gulp/server.js

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

アクセス許可の問題を修正する必要はまだないことはわかっていますが、開発サーバーを実行するときに、自動的にブラウザー (ブラウザーが既に開いている場合は新しいタブ) が開くと便利だと思います。提案や解決策は大歓迎です。みんなありがとう。

于 2015-06-24T13:24:57.323 に答える
5

これをubuntuで実行しているときに同じ問題に直面していましたが、windowsではすべて正常に動作していましたが、browsersyncの初期化でopen:falseを設定すると問題が解決しました。

browserSync.instance = browserSync.init(files, {
    startPath: '/',
    open:false,
    server: {
      baseDir: baseDir,
      middleware: middleware,
      routes: routes
    },
    browser: browser
  });
于 2015-10-26T19:23:55.210 に答える
0

プロジェクトはどのフォルダにありますか? アプリを /opt の下にインストールしたため、EACCES エラーが発生しました

コマンドnode server.jsを使用してサーバーを実行してみましたか?

于 2015-06-23T14:56:39.623 に答える