@babel/plugin-proposal-decorators 錯誤 Decorators transform is necessary

react-mobx,mobx,註解依賴於 @babel/plugin-proposal-decorators。javascript

7.0 - 7.1.x 階段,@babel/plugin-proposal-decorators 的聲明必須優先於 @babel/plugin-proposal-class-properties,相似以下:java

options: {
	presets: ['@babel/preset-env', '@babel/preset-react'],
	plugins: [
		['@babel/plugin-proposal-decorators', {
			"legacy": true
		}],
		['@babel/plugin-proposal-class-properties', {
			"loose": true
		}],
		'@babel/plugin-transform-modules-commonjs',
		'@babel/plugin-transform-block-scoping',
		'@babel/plugin-transform-computed-properties',
		'@babel/plugin-proposal-object-rest-spread',
		'@babel/plugin-transform-async-to-generator',
		'@babel/plugin-transform-regenerator'
	]
}

此時的 babel package 環境以下:react

{
	"@babel/core": "^7.1.6",
	"@babel/plugin-proposal-class-properties": "^7.1.0",
	"@babel/plugin-proposal-decorators": "^7.2.0",
	"@babel/plugin-proposal-object-rest-spread": "^7.0.0",
	"@babel/plugin-transform-async-to-generator": "^7.1.0",
	"@babel/plugin-transform-block-scoping": "^7.1.5",
	"@babel/plugin-transform-computed-properties": "^7.0.0",
	"@babel/plugin-transform-modules-commonjs": "^7.1.0",
	"@babel/plugin-transform-regenerator": "^7.0.0",
	"@babel/polyfill": "^7.0.0",
	"@babel/preset-env": "^7.1.6",
	"@babel/preset-react": "^7.0.0",
}

babel 升級到 7.2,任意一個 babel 的plugin,特別是 @babel/plugin-proposal-decorators 或 @babel/plugin-proposal-class-properties 中的任意一個,只要升級了(後安裝),就要所有都升級到 7.2 。後端

不然就是就會出現針對註解的代碼,提示以下錯誤(即7.0 - 7.1 @babel/core 調用 7.2 的 plugins):babel

SyntaxError: [文件].js: Decorators transform is necessary.async

頭疼,比後端依賴庫管理還複雜。插件

package 各插件依賴信息以下:rest

{
    "@babel/core": "^7.2.2",
    "@babel/plugin-proposal-class-properties": "^7.2.3",
    "@babel/plugin-proposal-decorators": "^7.2.3",
    "@babel/plugin-proposal-object-rest-spread": "^7.2.0",
    "@babel/plugin-transform-async-to-generator": "^7.2.0",
    "@babel/plugin-transform-block-scoping": "^7.2.0",
    "@babel/plugin-transform-computed-properties": "^7.2.0",
    "@babel/plugin-transform-modules-commonjs": "^7.2.0",
    "@babel/plugin-transform-regenerator": "^7.0.0",
	"@babel/polyfill": "^7.0.0",
	"@babel/preset-env": "^7.1.6",
	"@babel/preset-react": "^7.0.0",
}

該影響只關聯 babel 的插件,不關聯 preset 和 polyfill runtime 系列。code

相關文章
相關標籤/搜索