![](/img/trans.png)
[英]How to fix : Inefficient Regular Expression Complexity in chalk/ansi-regex
[英]github Dependabot alert: Inefficient Regular Expression Complexity in nth-check
可能重復,但找不到任何明確的答案。
Dependabot 無法將 nth-check 更新為不易受攻擊的版本 由於以下 > 沖突的依賴關系,可以安裝的最新可能版本是 1.0.2:
react-scripts@5.0.0 通過對 css-select@2.1.0 的傳遞依賴需要 nth-check@^1.0.2
剛剛從 4.0.0 升級到 react-scripts@5.0.0。
正如 Dan Abramov 在本期中所解釋的那樣,它(很可能)是一場虛驚,可以安全地解除。
更具體地說,如果您使用 CRA 並且 nth-check 僅從中引用,這不是問題,因為 CRA 是一個構建工具,易受攻擊的代碼永遠不會進入生成的應用程序包,因此永遠不會被客戶端調用代碼。
您可以通過將“react-scripts”移動到package.json
中的“devDependencies”並運行npm audit --production
來驗證這一點。
我也在 react-scripts@^5.0.0
所以,我個人建議先使用紗線。 但是每個人都有自己的喜好! 為此,可以鍵入
npm install --global yarn
之后,您當然可以刪除您的包鎖定文件並在您的應用程序文件夾中運行以下命令
yarn
(這樣的驚喜。)這將生成一個 yarn.lock 文件。 請注意,您應該避免同時使用 yarn 和 npm !
在同一個 yarn.lock 文件中,您將不得不搜索第 n 個檢查字符串! 在一個全新的 React 應用程序中(到目前為止),您應該會發現該字符串出現了 8 次。 此字符串將設置在軟件包版本旁邊。 這就是你想要改變的。
就我而言,我有例如
nth-check@^1.0.2: //so far. This version can be different for an older projet.
version "1.0.2"
resolved "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz"
你想改變所有那些錯誤的版本。 它應該是這樣的:
nth-check@^2.0.1:
version "2.0.1"
resolved "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz"
不過,您將不得不更改幾個版本。 不止一個。 我編輯了(我相信-6次。如果你保存文件,啟動一個簡單的
yarn
命令后跟一個
yarn audit
它應該解決您的一個問題!
希望這會有所幫助。 干杯!
我確認它在 react-scripts 5.0.1 中仍然有效,您可以將您的 react 腳本版本從 package.json 中的“dependencies”移動到“devDependencies”,如下所示:
"devDependencies": {
"react-scripts": "^5.0.1"
},
“devDependencies 是在開發階段通過在文件中要求它們或作為二進制文件運行來消耗的包。這些包僅在開發期間是必需的,而不是生產構建所必需的。”
運行“npm audit --production”以表明您在生產中不需要 react-scripts。
當然,如果您仍然遇到漏洞,則可能是另一個軟件包導致了該漏洞。
https://dev.to/moimikey/demystifying-devdependencies-and-dependencies-5ege
在告訴您解決方法之前有幾點:
react-scripts
漏洞似乎是一個誤報(如這里所討論的)。 Dan Abramov 還寫了一篇引人入勝的深入博客文章,介紹了npm audit
的工作原理以及它是如何以某種方式被破壞的,特別是對於前端工具的設計。
由於react-scripts
本質上是一個構建工具,即使該漏洞確實是真實的,它也將被視為只是一個開發問題,因為無論如何它都會從生產包中剝離出來。
因此,如果您對這種所謂的“漏洞”不采取任何措施,就不會發生任何不好的事情,而且完全沒問題。 但是,如果存在漏洞的紅色警報在美學上使您煩惱或正在破壞您的 CI/CD,那么請繼續閱讀。
解決方法:
問題似乎始於 lib @svgr/webpack 4.0.0 - 5.0.0
。
如果您使用的是node
版本 >= 16,則可以自己安裝@svgr/webpack
,在我的情況下,我安裝了版本: ^6.2.1
作為devDependency
。
之后,您應該在package.json
中創建一個覆蓋(或解決方案,如果您使用的是yarn
)部分並包含以下行: "@svgr/webpack": "$@svgr/webpack"
。
最后,您必須刪除node_modules
文件夾和package-lock.json
,然后執行npm install
。
打開 package.json。 你會發現這個:
“依賴”:{“反應”:“^17.0.2”,“反應域”:“^17.0.2”,“反應腳本”:“4.0.3”}
獲取 react-scripts 並將其移至 devDependencies(如果沒有,請創建它):
“依賴項”:{“反應”:“^17.0.2”,“react-dom”:“^17.0.2”},“devDependencies”:{“反應腳本”:“4.0.3”},
然后,確保您運行“npm audit --production”
這將修復您的警告。
如果上面提到的任何一種方法都不起作用,那么試試這個:
首先檢查該漏洞是否在您的代碼中使用
npm-檢查
現在,如果代碼中未使用漏洞模塊,則轉到“package-lock.json”並搜索漏洞路徑,例如
node_modules/svgo/node_modules/nth-check
並在 json 文件中刪除此依賴項
然后運行
npm審核
這將顯示
found 0 vulnerabilities
這主要發生在使用時
npx 創建反應應用程序“應用程序”
並嘗試安裝一個模塊“React-Scripts”
希望這有幫助
在您的 CMD 中檢查" npm -g list "
和"npm install -g create-react-app"
在那之后"npx create-react-app./"
我不得不將一個特定的依賴項及其子依賴項版本更改為 2.0.1,在我的例子中,有問題的依賴項是“css-select@npm:^2.0.0”,
只需在yarn.lock文件中搜索 nth-check,您就會在“css-select@npm:^2.0.0”中找到作為子依賴項的 nth-check 依賴項,您需要更改版本形式“1.0.2”到“2.0.1”它看起來像波紋管
css-select@npm:^2.0.0": version: 2.1.0 resolution: "css-select@npm:2.1.0" dependencies: boolbase: ^1.0.0 css-what: ^3.2.1 domutils: ^1.7.0 nth-check: ^2.0.1 // this is where you need to make change checksum: 0c4099910f2411e2a9103cf92ea6a4ad738b57da75bcf73d39ef2c14a00ef36.. languageName: node linkType: hard
任何仍然使用這個舊版本的第 n 次檢查的依賴項作為子依賴項都必須更新,這將解決問題
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.