我有与Gulp with browserify: Cannot find module src/js/main.js中描述的完全相同的问题:我有一个JavaScript项目,我可以从命令行使用browserify构建,但不是gulp。但是这个问题的解决方案对我不起作用。
从命令行:
browserify -t reactify ./js/inspector > static/js/inspector.js
完美无缺。当我运行以下gulp任务时:
gulp.task('browserify', function() {
return browserify({
transform: ['reactify'],
entries: ['./js/inspector.js']
})
.bundle()
.pipe(source('inspector.js'))
.pipe(gulp.dest('./static/js/'));
});
并运行它,我在控制台中收到以下错误:
Error: Cannot find module '../../inspector'
并且生成的文件与CLI文件的长度相同,但模块的顺序不同。这让我很困惑。
我的全局和本地模块中有相同版本的browserify,我在任何地方都没有明确地配置它。
与提出另一个问题的Ben Davis不同,在我的路径开头添加./不会改变任何内容。
我不明白为什么当浏览gulp时,browserify会提供不同的,破坏的输出。
更新:项目的目录结构:
gulpfile.js
node_modules/
js/ (also contains subdirectories with JS code)
inspector.js
static/
js/
inspector.js (built)
更新:当我通过Grunt运行Browserify时,我也会得到一个不同的文件,但它有效。
答案 0 :(得分:0)
您可以尝试在IIFC中包装返回功能。
//======================================
// Task: browserify
//======================================
gulp.task('browserify', function() {
return (function() {
browserify(config.src)
.bundle()
.pipe(source(config.name))
.pipe(gulp.dest(config.dest));
})();
});
我在当前项目中成功使用上述内容。
答案 1 :(得分:0)
我有其他需要根模块的模块,àla:
var inspector = require('../../inspector');
这是导致问题的原因(不知何故)。放入其他任何东西都不需要的根模块使gulp + browserify正常工作。
我会看看是否可以为gulp / browserify维护者创建一个最小的复制项目。