【发布时间】:2015-04-03 15:21:00
【问题描述】:
当这段代码(从 babel 生成)运行时,我收到错误 exports is undefined
Object.defineProperty(exports, '__esModule', {
有什么想法吗?
【问题讨论】:
标签: ecmascript-6 babeljs
当这段代码(从 babel 生成)运行时,我收到错误 exports is undefined
Object.defineProperty(exports, '__esModule', {
有什么想法吗?
【问题讨论】:
标签: ecmascript-6 babeljs
您很可能没有在支持 CommonJS 模块的环境中执行代码。您可以使用捆绑器,例如 Browserify 或 webpack 将您的模块捆绑到可以在不同环境中运行的东西中。
或者您可以选择不同的module transformer。
使用 webpack
运行npm install -g webpack; npm install -D babel-loader。然后使用这个 webpack 配置:
// webpack.config.js
module.exports = {
entry: "./path/to/entry/module.js",
output: {
path: __dirname,
filename: "bundle.js"
},
module: {
loaders: [
{ test: /\.js$/, exclude: /node_modules/, loader: "babel-loader"}
]
}
};
运行webpack 命令将使用 babel 转换所有通过入口文件可访问的*.js 文件,并将它们捆绑到bundle.js 中。
【讨论】:
我阅读了一篇文章,介绍了 ES6 导入和导出如何仅适用于具有“静态可分析文件”的浏览器,因此 Babel 删除了浏览器中的导入和导出支持。与异步或可能的安全性有关?
如果你想为了开发目的跳过服务器端捆绑,你可以把
window.MyModule = MyModule在底部,然后导入
var MyModule = window.MyModule 在您下一个文件的顶部
【讨论】: