Javascript Webpack babel loader运行时:模块生成失败:TypeError:this.setDynamic不是函数
我正在尝试将Javascript Webpack babel loader运行时:模块生成失败:TypeError:this.setDynamic不是函数,javascript,webpack,babel-loader,Javascript,Webpack,Babel Loader,我正在尝试将babel加载程序与babel插件转换运行时一起使用 我已按照以下说明操作: 有关守则: rules: [ // the 'transform-runtime' plugin tells babel to require the runtime // instead of inlining it. { test: /\.js$/, exclude: /(node_modules|bower_components)/, use: { l
babel加载程序
与babel插件转换运行时
一起使用
我已按照以下说明操作:
有关守则:
rules: [
// the 'transform-runtime' plugin tells babel to require the runtime
// instead of inlining it.
{
test: /\.js$/,
exclude: /(node_modules|bower_components)/,
use: {
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env'],
plugins: ['@babel/transform-runtime']
}
}
}
]
我在构建时遇到以下错误:
模块构建失败:错误:找不到模块“@babel/plugin transform runtime”
如果将插件名称更改为:plugins:['transform-runtime']
,则会出现以下错误:
模块生成失败:类型错误:this.setDynamic不是一个函数
问题出在哪里?您的网页条目看起来与示例相同,因此我想知道如果您使用
.babelrc
,会发生什么情况
{
"plugins": ["transform-runtime"]
}
你也安装了环境预设吗?经过一番努力,我找到了正确的方法 Tl;dr 如果安装新的babel加载程序,则应加载新的babel插件 完整故事 在官方文档中安装:
npm安装巴别塔-loader@8.0.0-beta.0@babel/core@babel/preset env网页包
在github页面中,以下是运行时插件的说明:
注意:您必须运行npm安装babel插件转换运行时
--保存dev以将其包含在您的项目中,并将babel运行时本身作为npm install babel runtime--save的依赖项
相反,您应该像这样使用新版本:
npm安装--保存dev@babel/plugin转换运行时
npm安装--保存@babel/runtime
然后,它将与文档中的配置一起工作。首先,正如@yccteam指出的,需要安装
npm install --save-dev @babel/plugin-transform-runtime
npm install --save @babel/runtime
.babelrc文件应具有
{
"presets": [
["@babel/preset-env", {
"debug": false,
"modules": false,
"useBuiltIns": false
}],
"@babel/preset-react"
],
"plugins": [
"syntax-dynamic-import",
"@babel/plugin-transform-runtime",
[ "@babel/plugin-proposal-class-properties", { "loose": true } ],
"transform-async-to-generator"
],
"env": {
"production": {
"presets": ["react-optimize"]
}
}
}
webpack.js文件应如下所示
module: {
rules: [
{
test: /(\.js[\S]{0,1})$/i,
exclude: /node_modules/,
loader: 'babel-loader',
query: {
presets: ['@babel/preset-react', '@babel/preset-env'],
plugins: ['@babel/proposal-class-properties']
},
},
...
环境预设工作正常。实际上,整个项目在没有运行时插件的情况下编译得很好。如果我使用.babelrc
并从babel loader
配置中删除此插件,则会出现相同的错误。如果将加载行更改为:loader:'babel',
,会发生什么情况。我想我前一阵子在什么地方读到过,那是一个补丁,但可能在想别的东西。也不管用<代码>未找到模块:错误:无法解析“babel”
当前的babel 7.4.0版本使用命名空间软件包,因此您必须将此插件列为@babel/plugin transform runtime
,即使在babelrc dotfile中也不确定这是否是去年发生的更改,所以只想标记syntax dynamic import
和transform async to generator
都需要@babel/syntax dynamic import
和@babel/transform async to generator