当前位置: 首页 > 面试题库 >

Browserify无法使用babelify转换创建捆绑包(TypeError:路径必须为字符串。)

巫马望
2023-03-14
问题内容

我已经编写了一个吞吞吐吐的任务,使用watchify和babelify作为转换将.jsx和.js脚本编译为一个包。由于某种原因,我的gulp脚本似乎在转换中令人窒息,而且我不确定为什么:

gulp.task('browserify', function() {
  var bundle = watchify(browserify('./app/jsx/client/index.jsx', {
    extensions: ['.js', '.jsx'],
    debug: process.env.NODE_ENV === 'development'
  }));
  bundle.transform(babelify);
  bundle.on('update', function() {
    rebundle(bundle);
  });


  function rebundle(bundle) {
    return bundle.bundle()
    .on('error', function(error) {
      console.log(error.stack, error.message);
      this.emit('end');
    })
    .pipe(
        gulpif(
          (process.env.NODE_ENV == 'production'),
          require('gulp-rename')('bundle.min.js'),
          require('gulp-rename')('bundle.js')
        )
    )
    .pipe(gulpif((process.env.NODE_ENV == 'production'), buffer()))
    .pipe(gulpif((process.env.NODE_ENV == 'production'), uglify()))
    .pipe(gulp.dest('dist/js'));
  }

  return rebundle(bundle);
});

在控制台中…

path.js:8
    throw new TypeError('Path must be a string. Received ' +
    ^

TypeError: Path must be a string. Received undefined
    at assertPath (path.js:8:11)
    at Object.posix.join (path.js:480:5)
    at Transform.stream._transform (/home/zipp/search-admin/node_modules/gulp-rename/index.js:52:22)
    at Transform._read (_stream_transform.js:167:10)
    at Transform._write (_stream_transform.js:155:12)
    at doWrite (_stream_writable.js:292:12)
    at writeOrBuffer (_stream_writable.js:278:5)
    at Transform.Writable.write (_stream_writable.js:207:11)
    at Readable.ondata (/home/zipp/search-admin/node_modules/browserify/node_modules/read-only-stream/node_modules/readable-stream/lib/_stream_readable.js:572:20)
    at emitOne (events.js:77:13)
    at Readable.emit (events.js:169:7)

问题答案:

该错误是因为您需要vinyl-source-stream在那里。结果.bundle()是文件数据的标准Node流。您正在获取数据,并将其传递给它,rename这将需要Gulp
File对象流。

var source = require('vinyl-source-stream');

// stuff

  function rebundle(bundle) {
    return bundle.bundle()
    .on('error', function(error) {
      console.log(error.stack, error.message);
      this.emit('end');
    })
    .pipe(
        gulpif(
          (process.env.NODE_ENV == 'production'),

          // Use 'source' here instead, which converts binary
          // streams to file streams.
          source('bundle.min.js'),
          source('bundle.js')
        )
    )
    .pipe(gulpif((process.env.NODE_ENV == 'production'), buffer()))
    .pipe(gulpif((process.env.NODE_ENV == 'production'), uglify()))
    .pipe(gulp.dest('dist/js'));
  }

rename可以使用而不是使用source来定义文件的初始名称。



 类似资料:
  • 我在尝试使用nokogiri运行rake任务时遇到这个错误。 编辑:顶部表架构

  • 在进入第二种方法前,首先先介绍一下会用到 Browserify、Gulp、Babelify 三种前端开发常会用到的工具: Browserify 如同官网上说明的:Browserify lets you require('modules') in the browser by bundling up all of your dependencies.,Browserify 是一个可以让你在浏览器端也

  • 我正在学习Oracle.com上的基本I/O教程,但我在创建Path对象方面遇到了困难: 我在Linux上,我在Eclipse Kepler中工作。我正在尝试访问当前目录中的一个文本文件。使用扫描仪和文件,我可以处理文件,但我也想摆弄一个文件的路径,这样我就可以继续与教程。 编辑:整个程序如下所示。后半部分是我作为一个菜鸟,并确认文件存在/工作。当我注释掉路径定义时,我会得到“test”的输出,它

  • 问题内容: 我尝试使用以下方法安装node.js模块: 但我得到这个错误: 可能正在发生这种情况,因为我使用代理服务器,但我通过这种方式设置了代理服务器,以允许从网络外部的ips下载 我希望你能帮帮我 问题答案: 从命令行设置代理。 如果仍然发生错误,请再试一次。 这些为我工作。(请参阅http://sushichop.blogspot.jp/2013/01/npm- install.html )

  • 问题内容: [添加]所以我的下一个问题是,当我尝试添加新的依赖项时(npm install –save socket.io)。JSON文件也有效。我收到此错误:无法解析json 因此,我一直在尝试找出为什么此错误一直在返回。所有文件(HTML,JSON,JS)都在我桌面上的同一文件夹内。我正在使用node.js和socket.io 这是我的JS文件: 这是返回的内容: 问题答案: 错误非常明显,您

  • 我使用的是Python3.3,但在尝试pickle一个简单的字典时出现了一个隐秘的错误。 代码如下: 我得到: