无法读取 gulp-browserify 中未定义的属性“发射”
Posted
技术标签:
【中文标题】无法读取 gulp-browserify 中未定义的属性“发射”【英文标题】:Cannot read property 'emit' of undefined in gulp-browserify 【发布时间】:2015-09-11 23:12:30 【问题描述】:我遇到了问题。我已经创建了自己的种子:https://github.com/damirkusar/leptir-angular-seed,使用 gulp、browserify 等。
一切正常,因为我有一个好主意将节点从 10.32 更新到 12.5,我收到以下错误。我想这是从那时起。我也在另一台机器上试过,同样的设置,同样的错误。
所以,在 npm install 和 bower install 之后,我正在启动应用程序:
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。
但幸运的是,karma start 执行了测试并且所有测试都通过了..
也许有些版本没有得到正确的支持? 有谁知道是什么导致了这个问题?
-- 编辑 2015-June-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');
非常感谢
【问题讨论】:
tr
应该是什么?该错误通常意味着您的代码中存在语法或语义错误。
hmm.. 我不知道 tr 应该是什么.. 它在浏览器模块中的猜测.. 它不是我的代码.. 我没有这样的代码.. 可能有gulp-browserify 依赖的 browserify 模块出错?
我很确定,这会导致错误。但我必须看到更多的代码来帮助你。我现在应该,tr
应该是什么......
我所有的代码都在这里:github.com/damirkusar/leptir-angular-seed
项目太复杂,看不到相关代码。请列出相关文件或将其代码(仅相关部分)添加到您的问题中。
【参考方案1】:
"...but in fact, otherwise i am not using this module which causes the error."
- 达米尔
modules 也有依赖关系。其他模块使用的这些模块之一似乎有问题。
您正在使用的模块可能依赖于旧版本的节点组件。尝试恢复旧版本,直到错误修复。
【讨论】:
嗨 Marcel,我将我的节点降级到 10.32,我的 npm 降级到 1.4.28,还将一些关于旧提交的包移动到旧版本,但仍然存在同样的问题.. 如果我要求不高,你可以克隆 repo,安装节点包和 bower 并使用命令 gulp 运行应用程序吗?只是看看它是否在你的机器上工作? :) 如果是,那么我的机器上有些问题。如果不是,那我就不知道了【参考方案2】:在 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
【讨论】:
以上是关于无法读取 gulp-browserify 中未定义的属性“发射”的主要内容,如果未能解决你的问题,请参考以下文章
如何修复'TypeError:无法读取 Javascript 中未定义的属性'标题'
TypeError:无法读取reactjs中未定义的属性“长度”