Ответ 1
Попробуйте добавить exclude: /node_modules/
после loader: 'babel-loader'
. У меня была такая же проблема при попытке запустить трансформатор времени без исключения node_modules. Однако я не знаю об основной проблеме.
Я пытаюсь включить Babel transform-runtime, чтобы сделать мой код совместимым с 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'
},
]
}
};
Попробуйте добавить exclude: /node_modules/
после loader: 'babel-loader'
. У меня была такая же проблема при попытке запустить трансформатор времени без исключения node_modules. Однако я не знаю об основной проблеме.
Здравствуйте, у меня такая же проблема, и я нашел решение, которое работает для меня. См.:
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',
],
},
},
]
См. часть "время преобразования". Надеюсь, это поможет.
Вы можете попробовать заменить "exclude" на "include", следуя рекомендациям документации.
Попытайтесь предпочесть "включить", когда это возможно...
Это сработало для меня.
{
"test": /\.js/,
"loader": "babel",
"include": [path.resolve(__dirname, './src')]
}
У вас install также время выполнения babel?
Я только что установил оба и добавил плагин в .babelrc, и он сработал.
Кажется, проблема связана с запуском файлов core-js
через Babel 6, потому что Babel 6 больше не преобразует require('something')
в require('something').default
, как это делал Babel 5. Я даже попробовал запустить его через этот плагин https://www.npmjs.com/package/babel-plugin-add-module-exports, но независимо от того, что я сделал, он не исправил бы инструкции require должным образом. В конечном итоге мне просто пришлось исключить core-js
и различные файлы, связанные с Babel, с помощью babel-loader
, установив для этого свойство exclude
:
[
/node_modules\/babel-/m,
/node_modules\/core-js\//m,
/node_modules\/regenerator-runtime\//m
]
В качестве дополнительной заметки я не переустанавливал свой node_modules
с момента перехода на Babel 6, и это вызывало ту же проблему, но по какой-то другой таинственной причине.
Для тех из вас, кто использует веб-пакет, не забудьте включить в папку конфигурации node_modules
следующую папку в файле конфигурации webpack:
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']
}
}
}
]
}