无法使 ES6 模块中的对象导入与 Gulp、Browserify 和 Babelify 一起使用

Can't make object imports in ES6 modules work with Gulp, Browserify and Babelify

我真的很喜欢 ES6 模块,但我很难让它们完全与 Browserify 和增强的对象文字一起工作。

我创建了一个简化的测试用例来总结我的问题。

这是 gulpfile:

var gulp = require('gulp');
var babelify = require('babelify');
var browserify = require('browserify');
var buffer = require('vinyl-buffer');
var source = require('vinyl-source-stream');

gulp.task('scripts', function() {
  var b = browserify({
    entries: 'main.js',
    debug: true
  })
  .transform(babelify)

  return b.bundle()
  .pipe(source('bundle.js'))
  .pipe(buffer())
  .pipe(gulp.dest('./'));
});

gulp.task('default', ['scripts']);

其目标是使用 Browserify 转换 ES6 模块并将 ES6 转译为 ES5。

现在,我对基本导入没有任何问题,但我无法使其与对象导入一起使用。假设我有这两个文件:

utils.js

let utils = {
  sayHi() {
    console.log('hi');
  }
}

main.js

import utils from './utils';

utils.sayHi();

这将引发错误:Uncaught TypeError: _utils2.default.sayHi is not a function

此时我找不到任何合适的解决方法。任何帮助将不胜感激!

试试这个:

// utils.js
export default utils = { ... }

// main.js
import utils from './utils';

utils.sayHi();

如果您不默认导出 utils,则必须将导入更改为:

import { utils } from './utils';

您没有从 utils.js 导出任何内容,因此您无法导入任何内容。

如果您希望能够按写入的方式导入对象,则必须将其设置为默认 导出:

export default utils;