我试图加入Babel的转换运行时来使我的代码与IE9兼容。但是自从集成它以来,代码甚至不能在Chrome上运行。我在Uncaught TypeError: $export is not a function
上收到错误es6.object.define-property.js:3
。没有" transform-runtime"在我的.babelrc中,一切都运行良好。有什么想法吗?
这是我的.babelrc
:
{
"plugins": [
"transform-runtime"
],
"presets": [
"es2015",
"react"
]
}
我的webpack.config.js
:
var webpack = require('webpack');
var commonsPlugin = new webpack.optimize.CommonsChunkPlugin('common.js');
module.exports = {
entry: {
EventAdmin: './src/event_admin',
EventRender: './src/event_render'
},
output: {
path: '../public/js2',
filename: '[name].js' // Template based on keys in entry above
},
externals: {
// require("jquery") is external and available
// on the global var jQuery
'jquery': 'jQuery'
},
plugins: [commonsPlugin],
devtool: 'source-map',
module: {
loaders: [
{ test: /\.css$/, loader: 'style-loader!css-loader' },
{
test: /\.js$/,
loader: 'babel-loader'
},
]
}
};
答案 0 :(得分:46)
尝试在exclude: /node_modules/
之后添加loader: 'babel-loader'
。尝试在不排除 node_modules 的情况下运行运行时转换器时遇到了同样的问题。不过,我不知道潜在的问题。
答案 1 :(得分:22)
您好我有同样的问题,最后找到了适合我的解决方案。见:
loaders: [
{
test: /.js/,
loader: 'babel',
query: {
presets: ['es2015', 'es2017'],
plugins: [
['transform-runtime', {
helpers: false,
polyfill: false,
regenerator: true, }],
'transform-es2015-destructuring',
'transform-object-rest-spread',
'transform-async-to-generator',
],
},
},
]
请参阅'transform-runtime'部分。我希望这会有所帮助。
答案 2 :(得分:7)
根据documentation的推荐,您可以尝试将“exclude”替换为“include”。
尽可能尝试选择“包含”......
这对我有用。
{
"test": /\.js/,
"loader": "babel",
"include": [path.resolve(__dirname, './src')]
}
答案 3 :(得分:3)
首先,您必须安装babel-plugin-transform-runtime
,然后像我一样使用它:
{
"presets": [
"es2015",
"react",
"stage-0"
],
"plugins": [
"transform-runtime"
]
}
之后,您必须将exclude
密钥添加到babel-loader
内部webpack
配置文件中:
{
test: /\.(js|jsx)$/,
exclude: /node_modules/,
use: [
{
loader: 'babel-loader',
}
]
}
注意:请写/node_modules/
而不是/(node_modules\/)/
或/node_modules\//
,这很奇怪,但这种方式有效。
答案 4 :(得分:2)
通过Babel 6运行core-js
文件似乎存在问题,因为Babel 6不再像Babel 5那样将require('something')
转换为require('something').default
。我甚至尝试通过这个插件https://www.npmjs.com/package/babel-plugin-add-module-exports运行它,但不管我做了什么,都不能正确地纠正require语句。我最终只需通过将core-js
属性设置为babel-loader
来排除exclude
和各种与Babel相关的文件被
[
/node_modules\/babel-/m,
/node_modules\/core-js\//m,
/node_modules\/regenerator-runtime\//m
]
处理:
node_modules
作为旁注,自从转换为Babel 6以来,我没有重新安装我的@Test
fun `just testing`() {
var showedChatAssigner = false
var showChatComposer = false
var didHideChat = false
determineBottomBarView(null,{ showedChatAssigner = true }, { showChatComposer = true }, { didHideChat = true })
assertThat(showedChatAssigner, equalTo(true))
assertThat(showChatComposer, equalTo(false))
assertThat(didHideChat, equalTo(false))
}
,这导致了同样的问题,但出于其他一些神秘的原因。
答案 5 :(得分:2)
对于那些使用webpack的人,请确保不要在webpack配置文件中包含以下node_modules
文件夹:
module: {
rules: [
{
test: /\.js$/,
// With this line, make sure you only include your javascript
// source files
include: [ path.resolve(__dirname, './src') ],
use: {
loader: 'babel-loader',
options: {
presets: ['env'],
plugins: ['transform-runtime']
}
}
}
]
}
答案 6 :(得分:1)
你有install还有babel-runtime吗?
我刚刚安装了两个并在.babelrc中添加了插件,结果很好。