错误:缺少类属性转换
Error: Missing class properties transform
Error: Missing class properties transform
Test.js
:
export class Test extends Component {
constructor (props) {
super(props)
}
static contextTypes = {
router: React.PropTypes.object.isRequired
}
.babelrc
:
{
"presets": ["es2015", "react", "stage-0"],
"plugins": ["transform-class-properties"]
}
package.json
:
"babel-core": "^6.5.1",
"babel-eslint": "^4.1.8",
"babel-loader": "^6.2.2",
"babel-plugin-react-transform": "^2.0.0",
"babel-plugin-transform-class-properties": "^6.5.2",
"babel-preset-es2015": "^6.5.0",
"babel-preset-react": "^6.5.0",
"babel-preset-stage-0": "^6.5.0",
"babel-register": "^6.5.2",
我已经搜索了网络,所有修复都围绕着:升级到 babel6,将"stage-0"的顺序切换为"es2015"之后。所有这些都是我做的。
安装@babel/plugin-proposal-class-properties
:
npm install @babel/plugin-proposal-class-properties --save-dev
或
yarn add @babel/plugin-proposal-class-properties --dev
并将以下内容添加到您的 Babel 配置文件中 - 通常是 .babelrc
或 babel.config.js
。
"plugins": ["@babel/plugin-proposal-class-properties"],
好吧,终于想通了,在我的webpack.config.js
中,我有:
module: {
loaders: [
{
test: /'.js?$/,
exclude: /(node_modules|bower_components)/,
loaders: [
'react-hot',
'babel?presets[]=react,presets[]=es2015,presets[]=stage-0'
]
}
]
}
'babel?presets[]=stage-0,presets[]=react,presets[]=es2015'
必须以与.babelrc
相同的方式处理,将阶段 0 切换为 es2015 之后,并且可以完美编译。
以防万一有人实际上仍然面临同样的问题,以下博客文章确实帮助了我:https://devblogs.microsoft.com/typescript/typescript-and-babel-7/
就我而言(babel 7.9.6,打字稿 3.9.2,webpack 4.43.0),我必须执行以下操作:
-
运行以下命令:
npm install --save-dev @babel/preset-typescript @babel/preset-env @babel/plugin-proposal-class-properties @babel/plugin-proposal-object-rest-spread
-
使用以下内容创建 .babelrc 文件(是的,我以前没有,它确实工作得很好):
{ "presets": [ "@babel/env", "@babel/preset-typescript" ], "plugins": [ "@babel/proposal-class-properties", "@babel/proposal-object-rest-spread" ] }
当我不假思索地将一些箭头函数放入我的一个类时,我遇到了这个问题。一旦我将箭头函数更改为常规函数/方法定义,错误就解决了。
在我的情况下,修复是在我的 webpack.config 的选项属性中定义"转换类属性"插件.js,我正在使用 babel V6
rules:[
.....,
{
test: /'.(js|jsx)$/,
exclude: /(node_modules|bower_components)/,
loader: 'babel-loader',
options: { plugins: ['transform-class-properties']}
}
]
我遇到了同样的错误,我在 .babelrc 中正确订购了我的插件,但它仍然存在。删除我在 webpack 加载器中定义的预设参数修复了它。
以前的 webpack 配置:
module: {
rules: [
{
test: /.jsx?$/,
loader: 'babel-loader',
include: path.join(__dirname, 'src'),
exclude: /node_modules/,
query: {
presets: ['es2015', 'react']
}
}
]
}
工作 webpack 配置:
module: {
rules: [
{
test: /.jsx?$/,
loader: 'babel-loader',
include: path.join(__dirname, 'src'),
exclude: /node_modules/
}
]
}
我有这个错误,因为我使用的是stage-3
而不是stage-0
。
由于使用了 env 预设,我也遇到了此错误:
"presets": [ "react", "es2015", "stage-0", ["env", {
"modules": false
}]],
在我删除 env 预设后,它运行良好
@speak是对的,但你需要改变顺序
loaders: [
'react-hot',
'babel?presets[]=react,presets[]=es2015,presets[]=stage-0'
]
我在使用koa-react-view时遇到了同样的问题。从这些答案中获得灵感,最后在koa server.js
中使用以下代码修复它:
const register = require('babel-register');
register({
presets: ['es2015', 'react', 'stage-0'],
extensions: ['.jsx']
});
终于发现,要在 Laravel-Mix 项目中删除此错误,请在 webpack.mix.js
中添加以下代码
mix.webpackConfig({
module: {
rules: [
{
test: /'.js?$/,
exclude: /(node_modules|bower_components)/,
loaders: [
'babel-loader?presets[]=react,presets[]=es2015,presets[]=stage-0'
]
}
],
}
});
如果您使用的是 Babel 7.4 或更高版本,则不推荐使用 @babel/pollify
。
安装core-js
、regenerator-runtime
、@babel/plugin-proposal-class-properties
和babel-plugin-transform-class-properties
软件包。
yarn add core-js regenerator-runtime @babel/plugin-proposal-class-properties babel-plugin-transform-class-properties --dev
// or
npm install core-js regenerator-runtime @babel/plugin-proposal-class-properties babel-plugin-transform-class-properties --save-dev
然后,添加到.babelrc
或babel.config.js
"plugins": ["@babel/plugin-proposal-class-properties"],
最后,在主 js 文件中添加以下行:
import "core-js/stable";
import "regenerator-runtime/runtime";
取自:https://stackoverflow.com/a/54490329/9481448
完整的工作解决方案 --
-
使用 "react-pdf": "^5.7.2" 版本
-
从 "react-pdf" 导入 { Document, Page, pdfjs }
; -
还要将其添加到功能组件中
useEffect(() => { pdfjs.GlobalWorkerOptions.workerSrc = https://cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjs.version}/pdf.worker.js
;});
如果您使用的是 create-react-app,则可以将特定于 babel 的配置添加到您的package.json
:
"babel": {
"presets": [
"react-app"
],
"plugins": [
[
"@babel/plugin-proposal-class-properties",
{
"loose": true
}
]
]
}
- 手柄'img'单击事件并插入'alt'使用jQuery将属性转换为文本框
- Javascript将数组中对象的属性转换为字符串
- 如何将返回一串数字的 JSON 属性转换为日期
- undescoreJS - 将对象属性转换为数组
- 如何在JavaScript中将JSP请求属性转换为字符串并将其分配给对象
- 如何将字符串中的链式属性转换为javascript中的变量
- 如何将外部 css 属性转换为内联属性
- JS - 将字符串从数据属性转换为对象
- 错误:缺少类属性转换
- 将 camelCaseWords 从数据属性转换为“骆驼案例词”
- 在 TypeScript 中从 DOM 属性转换为枚举
- Javascript将NaN字符串属性转换为可用数字
- Html将5个数据属性转换为jquery插件选项格式
- Node.js将对象的所有属性转换为字符串
- 可以将对象属性转换为自己的对象
- 将某些observableArray对象属性转换为observable
- 将HTML名称属性转换为Javascript对象
- 用逗号分隔的属性转换为带下划线或长划线的实际属性
- 将用户提交的外部链接属性转换为在新窗口中打开
- 如何从图像中复制URL's src属性转换为jQuery中的href属性