J'essaie d'incorporer le transform-runtime de Babel pour rendre mon code compatible avec IE9. Mais depuis son intégration, le code ne fonctionnera même pas sur Chrome. J'obtiens l'erreur Uncaught TypeError: $export is not a function
sur es6.object.define-property.js:3
. Sans la ligne "transform-runtime" dans mon .babelrc, tout fonctionne bien. Des idées?
Voici mon .babelrc
:
{
"plugins": [
"transform-runtime"
],
"presets": [
"es2015",
"react"
]
}
Et mon 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'
},
]
}
};
Essayez d'ajouter exclude: /node_modules/
après loader: 'babel-loader'
. J'ai eu le même problème en essayant d'exécuter le transformateur d'exécution sans exclure node_modules. Je ne suis cependant pas conscient du problème sous-jacent.
Bonjour, j'ai le même problème et j'ai finalement trouvé une solution qui fonctionne pour moi. Voir:
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',
],
},
},
]
Voir la partie "transform-runtime". J'espère que ça aide.
Vous pouvez essayer de remplacer "exclure" par "inclure", en suivant les recommandations de documentation .
Cela a fonctionné pour moi.
{
"test": /\.js/,
"loader": "babel",
"include": [path.resolve(__dirname, './src')]
}
.
Au début, vous devez installer babel-plugin-transform-runtime
, Puis l'utiliser comme moi:
{
"presets": [
"es2015",
"react",
"stage-0"
],
"plugins": [
"transform-runtime"
]
}
Après cela, vous devez ajouter la clé exclude
à votre babel-loader
Dans le fichier de configuration webpack
:
{
test: /\.(js|jsx)$/,
exclude: /node_modules/,
use: [
{
loader: 'babel-loader',
}
]
}
Attention: veuillez écrire /node_modules/
Pas /(node_modules\/)/
ou /node_modules\//
, C'est bizarre mais ça marche.
Cela semble être un problème lors de l'exécution de fichiers core-js
Via Babel 6 car Babel 6 ne convertit plus require('something')
en require('something').default
comme Babel 5 l'a fait. J'ai même essayé de l'exécuter via ce plugin https://www.npmjs.com/package/babel-plugin-add-module-exports mais peu importe ce que j'ai fait, cela ne corrigerait pas l'exigence correctement. J'ai finalement dû exclure le core-js
Et divers fichiers liés à Babel du traitement par le babel-loader
En définissant la propriété exclude
sur ceci:
[ /node_modules\/babel-/m, /node_modules\/core-js\//m, /node_modules\/regenerator-runtime\//m ]
En remarque , je n'avais pas réinstallé mon node_modules
Depuis la conversion vers Babel 6 et cela a causé le même problème mais pour d'autres raison mystérieuse.
Pour ceux d'entre vous qui utilisent Webpack, assurez-vous de ne pas inclure le node_modules
dossier avec les éléments suivants dans votre fichier de configuration de 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']
}
}
}
]
}
Avez-vous install aussi le babel-runtime?
J'ai juste installé les deux et ajouté le plugin dans le .babelrc et cela a fonctionné.