react項目升級報錯,babel報錯,.babelrc配置兼容等問題及解決
react項目升級報錯,babel報錯,.babelrc配置兼容問題
由於開發環境和項目版本的兼容問題,嘗試升級瞭react-scripts後,一大堆問題接踵而至,翻遍瞭百度和csdn,往往解決瞭舊的又出現新的,或者開發沒問題而打包時報錯,現羅列一下遇到的主要問題和最終解決方案,以供參考。
遇到問題
digital envelope routines::unsupported
命令行運行 $env:NODE_OPTIONS=“–openssl-legacy-provider” ,再次啟動即可
Parsing error: This experimental syntax requires enabling one of the following parser plugin(s): “decorators-legacy”, “decorators”.
require() of ES Module ……is not supported.
Parsing error: This experimental syntax requires enabling one of the following parser plugin(s): “decorators-legacy”, “decorators”.
[eslint] The “path” argument must be of type string. Received an instance of Array
[eslint] ESLint configuration in .eslintrc is invalid:
– Unexpected top-level property “babel”.
最終解決方案
刪掉根目錄下的.babelrc文件,在package.json中配置:
"babel": { "presets": [ "react-app" ], "plugins": [ [ "@babel/plugin-proposal-decorators", { "legacy": true } ] ] },
必要時安裝依賴:“@babel/eslint-parser”
註:
babel-eslint 自 2020 年 3 月起已被棄用。 該軟件包已遷移到新的倉庫,如有需要請查閱 ‘@babel/eslint-parser’
react運行報錯TypeError
報錯:TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string.
在同事幫忙下已解決,
現記錄一下思路
頁面 / 控制臺報錯
TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received undefined
at validateString (internal/validators.js:117:11)
at Object.join (path.js:375:7)
at noopServiceWorkerMiddleware (D:\git\healthyWashing\node_modules\react-dev-utils\noopServiceWorkerMiddleware.js:14:26)
……
根據提示,看出問題是在react-dev-utils下面的noopServiceWorkerMiddleware裡,
全局搜索‘"react-dev-utils"’,註意有雙引號,找到node_modules/react-scripts/package.json文件中的"react-dev-utils": "^10.0.0",這一行。
考慮到可能是沒有鎖定版本,最近有包有更新後造成bug的可能,所以去掉尖角號^,
然後 清除緩存並重新安裝依賴
npm cache clean --force npm install
再運行時項目就跑起來瞭。
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- 詳解React項目中eslint使用百度風格
- create-react-app開發常用配置教程
- js 可選鏈操作符的使用
- create-react-app全傢桶router mobx全局安裝配置
- 教你使用vscode 搭建react-native開發環境