无法读取 gulp-browserify 中未定义的 属性 'emit'

Cannot read property 'emit' of undefined in gulp-browserify

我 运行 遇到了问题。我已经创建了自己的种子:https://github.com/damirkusar/leptir-angular-seed 和 gulp、browserify 等等。

一切正常,因为我有将节点从 10.32 更新到 12.5 的好主意,我收到以下错误。我认为这是从那时起。我也在不同的机器上试过,同样的设置,同样的错误。

所以,在安装 npm 和 bower 安装后,我将启动应用程序:

gulp

或尝试使用

构建项目时
gulp build

我收到这个错误:

leptir-angular-seed/node_modules/gulp-browserify/node_modules/browserify/node_modules/module-deps/index.js:162
rs.on('error', function (err) { tr.emit('error', err) });
                                  ^
TypeError: Cannot read property 'emit' of undefined
at ReadStream.<anonymous> (/leptir-angular-seed/node_modules/gulp-browserify/node_modules/browserify/node_modules/module-deps/index.js:162:39)
at ReadStream.emit (events.js:107:17)
at fs.js:1618:12
at FSReqWrap.oncomplete (fs.js:95:15)

这里还有link到package.json:https://github.com/damirkusar/leptir-angular-seed/blob/450ffe99943036cd5a670e54ec3884c02bd7bb8a/package.json

但幸运的是,karma start 执行了测试并且所有测试都通过了..

可能有些版本没有被正确支持? 有谁知道导致此问题的原因吗?

-- 编辑 2015 年 6 月 25 日 14:23

我在我的 gulp 文件中使用导致问题的模块,如下所示:

// Browserify task
gulp.task('browserify', function () {
gulp.src(paths.browserify[0])
    .pipe(browserify({
        insertGlobals: true,
        debug: true
    }))
    // Bundle to a single file
    .pipe(concat('bower.js'))
    // Output it to our dist folder
    .pipe(gulp.dest(paths.destination_public))
    .pipe(refresh(lrServer)); // Tell the lrServer to refresh;

gulp.src(paths.browserify[1])
    .pipe(browserify({
        insertGlobals: true,
        debug: true
    }))
    // Bundle to a single file
    .pipe(concat('app.js'))
    // Output it to our dist folder
    .pipe(gulp.dest(paths.destination_public))
    .pipe(refresh(lrServer)); // Tell the lrServer to refresh;
});

哪个浏览器验证这些 app.js 文件及其内容:

require('./modules/core');
require('./modules/core');

和bower.js及其内容:

'use strict';

require('jquery');
require('bootstrap');
require('moment');
require('underscore');
require('angular');
require('angular-animate');
require('angular-bootstrap');
require('angular-bootstrap-tpls');
require('angular-cookies');
require('angular-mocks');
require('angular-resource');
require('angular-ui-router');
require('angular-ui-utils');
require('angular-translate');
require('angular-translate-loader-static-files');
require('angular-translate-loader-url');
require('angular-translate-storage-cookie');
require('angular-translate-storage-local');

非常感谢

"...but in fact, otherwise i am not using this module which causes the error." - 达米尔

模块也有依赖关系。另一个模块使用的这些模块之一似乎是一个问题。

您正在使用的模块可能依赖于旧版本的节点组件。尝试找回旧的,直到错误被修复。

在 windows machine(而不是我的 mac)上,它向我显示了更好的错误消息。

我引用了未安装的 bower 包..但完全忘记将其从 package.json 和 bower.js 中删除。

所以我删除了上述文件中引用以下包的代码:

  • angular-翻译存储cookie
  • angular-翻译存储本地

-- 2015 年 6 月 27 日更新 - 22:41 --

我看到 gulp-browserify 被 gulpjs 列入黑名单,所以我认为最好摆脱它,因为我在 windows [=55 上也遇到了问题=]海因斯。我没有使用 gulp-browserify,而是使用带有 vinyl-transform 的普通 browserify。

首先,更新您的package.json:

"browserify": "9.0.4",
"vinyl-transform": "1.0.0"

你看,我正在使用这两个版本,这是因为使用较新的 browserify 版本,事情并没有真正起作用,所以为了确保它在我更新我的包时也能起作用,我将它们保存在这个版本。

然后让我们更新我们的 gulp 文件。我们需要添加这两行:

var browserify = require('browserify'),
transform = require('vinyl-transform');

我的新任务是这样的:

gulp.task('browserify', function () {
  var browserified = transform(function(filename) {
    var b = browserify(filename);
    return b.bundle();
  });

  return gulp.src(paths.browserify)
    .pipe(browserified)
    .pipe(gulp.dest(paths.destination_public));
});

它现在更短更简洁了。我的路径是这样配置的..

var paths = {
    ...
    browserify: ['./public/bower.js', './public/app.js'],
    ...
    destination_public: './dist/'
};

现在我的种子正在以同样的方式在 mac 和 windows 上工作。 https://github.com/damirkusar/leptir-angular-seed