我遇到了浏览器需要供应商库的问题。
我使用的供应商库是better-dom,它也是使用Browserify构建的。我是从bower
安装的,当我尝试构建时,我得到了:
Error: Cannot find module './utils' from '<...>/bower_components/better-dom/dist'
显然,Browserify正在尝试解析和处理预构建库中的requires
语句。我尝试browserify-shim
和modulify
没有运气,下面还包括其他尝试。感谢任何帮助,提前谢谢。
我的配置:
package.json
:
...
"browser": {
"DOMLegacy": "./bower_components/better-dom/dist/better-dom-legacy.js",
"DOM": "./bower_components/better-dom/dist/better-dom.js"
},
...
Gulpfile.js
:
gulp.task('scripts', function() {
var bundle = browserify({
noparse: ["<...>bower_components/better-dom/dist/better-dom.js"]
});
bundle.add('./js/all.js');
// bundle.external("./bower_components/better-dom/dist/better-dom-legacy.js");
// bundle.external("./bower_components/better-dom/dist/better-dom.js");
// bundle.transform({ modulify: {
// "./bower_components/better-dom/dist/better-dom-legacy.js": "DOMLegacy",
// "./bower_components/better-dom/dist/better-dom.js": "DOM"
// }});
// bundle.require(
// "./bower_components/better-dom/dist/better-dom-legacy.js",
// { expose: "DOMLegacy" });
// bundle.require(
// "./bower_components/better-dom/dist/better-dom.js",
// { expose: "DOM" }
// );
return bundle.bundle()
.on('error', function(e) {
console.log(e.toString());
this.emit('end');
})
.pipe(source('all.js'))
.pipe(gulp.dest(paths.assets));
});
答案 0 :(得分:2)
我刚发现browserify 5中存在noparse
选项的错误。
解决方法:使用此选项的旧名称:noParse
(仍在browserify 5中工作)
var bundle = browserify({
noParse: ["<...>bower_components/better-dom/dist/better-dom.js"]
});
它应该修复你的构建。