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

时间:2015-06-25 11:13:59

标签: json angularjs node.js gulp browserify

我遇到了问题。我创建了自己的种子:https://github.com/damirkusar/leptir-angular-seed有gulp,browserify等等。

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

所以,在npm install和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)

这里也是package.json的链接:https://github.com/damirkusar/leptir-angular-seed/blob/450ffe99943036cd5a670e54ec3884c02bd7bb8a/package.json

但幸运的是,业力开始执行测试并且所有测试都在通过..

也许某些版本没有真正支持? 有没有人知道导致这个问题的原因是什么?

- 编辑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');

非常感谢你

2 个答案:

答案 0 :(得分:2)

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

模块也有依赖关系。它似乎是其他模块使用的其中一个模块的问题。

您使用的模块可能依赖于旧版本的节点组件。尝试将旧版本恢复,直到错误修复为止。

答案 1 :(得分:1)

在Windows机器上(而不是我的Mac),它向我显示了更好的错误消息。

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

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

  • 角平移存储cookie的
  • 角平移存储本地

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

我看到gulp-browserify被gulpjs列入黑名单,所以我认为最好摆脱它,因为我在Windows机器上也遇到了问题。而不是使用gulp-browserify,我使用简单的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