我有一个名为constants
的模块。 Browserify无法捆绑此模块,因为其名称与lib/builtins
中定义的内置模块冲突:
exports.constants = require.resolve('constants-browserify');
可以在生成的代码中观察到此效果。例如,依赖constants
的模块显示:
{
//...
12:[
function(require,module,exports){...},
{"util":6,"constants":2}
]
我们看到模块12依赖于模块2(constants
的索引)。索引为2的模块的定义是:
2:[
function(require,module,exports){
module.exports={
"O_RDONLY": 0,
"O_WRONLY": 1,
"O_RDWR": 2
// ...
}
},
{}
]
这些O_*
常量在constants-browserify
中定义,而不在我的constants
模块中定义。
我在Gulp中使用NPM包并指定以下options:
return browserify('./main.js', {
basedir: './scripts/app/',
paths: ['./scripts/app/'],
builtins: []
})
.bundle()
.pipe(source('main.js'))
.pipe(gulp.dest('dist'));
我希望将builtins
指定为[]
(我也试过{}
)会覆盖此行为,但似乎只将模块解析为{{1}在生成的代码中:
undefined
问题:
答案 0 :(得分:0)
我发现的唯一方法是手动排除与您发生碰撞的内置组件。
假设您与constants
和null
发生冲突,您可以使用:
browserify('./main.js', {
builtins: {constants:null, util:null}
});