Babel转换错误导出外部模块

时间:2017-05-10 12:32:28

标签: javascript webpack babel

我正在使用

"babel-core": "^6.24.1",
"babel-loader": "^7.0.0",
"babel-preset-env": "^1.4.0",
"babili-webpack-plugin": "0.0.11",
"webpack": "^2.5.1"

在我的webpack.config.js我已经声明了一些外部依赖:

externals: {
        "package-one": "package-one",
        "package-two": "package-two"
    },

babel装载机配置为:

module: {
        rules: [
            {
                test: /\.js$/,
                use: {
                    loader: 'babel-loader',
                    options: {
                        presets: ['env']
                    }
                }
            }
        ]
    }

我在使用这些软件包的JS文件上启动转换:

const p1 = require('package-one');
const p2 = require('package-two');

然而,转换后的输出显示:

(function(module, exports) {
   module.exports = package-one;
}),
(function(module, exports) {
   module.exports = package-two;
})

正如您所看到的,出口并未被""这导致最终构建中的错误。我可能在这里缺少什么?

2 个答案:

答案 0 :(得分:1)

查看documentation

它解释了应该如何使用外部

externals: {
    // require("jquery") is external and available
    //  on the global var jQuery
    "jquery": "jQuery"
}

因此,您需要外部库的全局变量的有效名称:

externals: {
    "package-one": "packageOne",
    "package-two": "packageTwo"
},

但是当然packageOne和packageTwo必须作为全局存在,这就是外部因素的用途。

答案 1 :(得分:0)

显然你必须设置:

libraryTarget: 'umd'

<{1>}中的output部分中的

。这将允许您在webpack.config.json中使用任何类型的键。在这里阅读更多: http://krasimirtsonev.com/blog/article/javascript-library-starter-using-webpack-es6