为什么在使用带有babel的webpack时导入带有命名导出的默认导出会导致错误?

时间:2016-11-10 01:45:18

标签: javascript webpack babeljs

我有2个构造函数,SignUp和GoogleSignIn。在结构上,它们看起来像这样:

function SignUp(){
    //Some constructor code
}

export let gapi_promise = (function(){

    return new Promise((resolve, reject) => {
        //Do some promise stuff with the google api
    });
}());

export default SignUp;

GoogleSignIn.js?1051**:21 Uncaught TypeError: Cannot read property 'prototype' of undefined(…)

我一直在使用带有babel加载器的webpack将这些和其他资产捆绑在一起,但是当我加载页面时,我收到错误:

GoogleSignIn.prototype = Object.create(SignUp.prototype);

基本上,SignUp的值未定义。我是否错误地导入或导出值?

具体来说,失败的一行就是这一行:

{{1}}

如有必要,我可以提供其他详细信息。非常感谢你!

1 个答案:

答案 0 :(得分:1)

这可能是因为您使用的是Babel 6,它根据ES6规范编译模块。如果是这种情况,您有两个解决方案:

1.Change GoogleSignIn.prototype = Object.create(SignUp.prototype);GoogleSignIn.prototype = Object.create(SignUp.default.prototype);

2.使用此插件(https://www.npmjs.com/package/babel-plugin-add-module-exports)来恢复旧的导出行为。

您可以参考Babel 6 changes how it exports default