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