【问题标题】:Gulp with browserify: Cannot find start moduleGulp with browserify:找不到启动模块
【发布时间】:2015-06-21 17:54:33
【问题描述】:

我遇到了与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 不同,在我的路径开头添加 ./ 不会改变任何事情。

我不明白为什么 browserify 在通过 gulp 运行时会给出不同的、损坏的输出。

更新:项目的目录结构:

gulpfile.js
node_modules/
js/                  (also contains subdirectories with JS code)
    inspector.js
static/
    js/
        inspector.js (built)

更新:当我通过 Grunt 运行 Browserify 时,我也得到了一个不同的文件,但它可以工作。

【问题讨论】:

  • 您能告诉我们您的文件夹结构吗?
  • @joshvito 我已经添加了。
  • @SomeKittens 不是,我在一开始就专门链接到那个问题,并解释为什么它不是重复的。
  • 好吧,让我澄清一下:这或多或少是相同的问题,但解决方案不适用于我的情况。

标签: javascript gulp browserify


【解决方案1】:

您可以尝试将返回函数包装在 IIFC 中。

//======================================
// Task: browserify
//======================================
gulp.task('browserify', function() {
  return (function() {
    browserify(config.src)
      .bundle()
      .pipe(source(config.name))
      .pipe(gulp.dest(config.dest));
  })();
});

我在当前项目中成功使用了上述内容。

【讨论】:

  • 我试过了,同样的效果:生成了一个大小相同的不同文件,我在浏览器中得到同样的错误信息。
【解决方案2】:

我还有其他需要根模块的模块,比如:

var inspector = require('../../inspector');

这就是导致问题的原因(不知何故)。放入其他任何东西都不需要的根模块使得 gulp + browserify 可以毫无问题地工作。

我会看看我是否可以为 gulp / browserify 维护者创建一个最小的复制项目。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-15
    • 1970-01-01
    • 1970-01-01
    • 2017-06-24
    • 2017-09-19
    • 2019-05-26
    相关资源
    最近更新 更多