es6ify.runtime使我的三个js导入空对象

时间:2015-01-08 09:33:03

标签: javascript node.js browserify ecmascript-6 traceur

我正在尝试使用es6ify浏览javascript es6代码。 我的代码使用的是三个js库(一个webgl抽象库),一切都运行良好,直到我尝试在bundle的顶部添加traceur编译器运行时。

这是我的gulp任务(问题不一定与gulp有关):

gulp.task('build', function(){

    browserify({debug: true})
    .add(es6ify.runtime)
    .transform(es6ify)
    .require(require.resolve('./app/index.js'), {entry: true})
    .bundle()
    .pipe(source('bundle.js'))
    .pipe(gulp.dest('./build/'));

});

在我的应用程序的某个地方,我正在尝试做类似的事情:

import THREE from 'three';

var toto = new THREE.WebGLRenderer([...]);

失败,因为THREE实际上是空对象,因此WebGLRenderer未定义。

三个js在节点package.json的依赖项中,而THREE JS 通常很好地导入。但是当我在构建过程中添加add(es6ify.runtime)时,会导致require('three')成为空对象......

有什么我错过的吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

很抱歉给您带来不便,我刚刚找到了解决方案。 如果我只是从traceur编译中排除节点模块,它就可以工作:

所以代替:

.transform(es6ify)

我现在有:

.transform(es6ify.configure(/^(?!.*node_modules)+.+\.js$/))

(这是an es6ifyAPI documentation样本)

编译速度更快: - )