0

我正在 create-react-app 中构建一个项目,并尝试安装 react-router-dom。但是安装失败,我收到以下错误:

npm ERR! Cannot read property 'match' of undefined

已经提出了类似的问题,并且发布的最常见的解决方案是删除 package-lock.json 文件,但这对我来说似乎很危险 - 有人有其他解决方案吗?另外,为什么我什至首先会收到此错误?

以下是错误的更详细日志:

0 info it worked if it ends with ok
1 verbose cli [
1 verbose cli   'C:\\Program Files\\nodejs\\node.exe',
1 verbose cli   'C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js',
1 verbose cli   'i',
1 verbose cli   'react-router-dom'
1 verbose cli ]
2 info using npm@6.13.4
3 info using node@v12.16.0
4 verbose npm-session 651e4109d0b3c099
5 silly install loadCurrentTree
6 silly install readLocalPackageData
7 http fetch GET 304 https://registry.npmjs.org/react-router-dom 1405ms (from cache)
8 silly pacote tag manifest for react-router-dom@latest fetched in 1742ms
9 timing stage:loadCurrentTree Completed in 64390ms
10 silly install loadIdealTree
11 silly install cloneCurrentTreeToIdealTree
12 timing stage:loadIdealTree:cloneCurrentTree Completed in 67ms
13 silly install loadShrinkwrap
14 timing stage:rollbackFailedOptional Completed in 0ms
15 timing stage:runTopLevelLifecycles Completed in 65031ms
16 silly saveTree gig-fort@0.1.0
17 verbose stack TypeError: Cannot read property 'match' of undefined
17 verbose stack     at tarballToVersion (C:\Program Files\nodejs\node_modules\npm\lib\install\inflate-shrinkwrap.js:87:20)
17 verbose stack     at inflatableChild (C:\Program Files\nodejs\node_modules\npm\lib\install\inflate-shrinkwrap.js:99:22)
17 verbose stack     at C:\Program Files\nodejs\node_modules\npm\lib\install\inflate-shrinkwrap.js:55:12
17 verbose stack     at tryCatcher (C:\Program Files\nodejs\node_modules\npm\node_modules\bluebird\js\release\util.js:16:23)
17 verbose stack     at Object.gotValue (C:\Program Files\nodejs\node_modules\npm\node_modules\bluebird\js\release\reduce.js:155:18)
17 verbose stack     at Object.gotAccum (C:\Program Files\nodejs\node_modules\npm\node_modules\bluebird\js\release\reduce.js:144:25)
17 verbose stack     at Object.tryCatcher (C:\Program Files\nodejs\node_modules\npm\node_modules\bluebird\js\release\util.js:16:23)
17 verbose stack     at Promise._settlePromiseFromHandler (C:\Program Files\nodejs\node_modules\npm\node_modules\bluebird\js\release\promise.js:517:31)
17 verbose stack     at Promise._settlePromise (C:\Program Files\nodejs\node_modules\npm\node_modules\bluebird\js\release\promise.js:574:18)
17 verbose stack     at Promise._settlePromiseCtx (C:\Program Files\nodejs\node_modules\npm\node_modules\bluebird\js\release\promise.js:611:10)
17 verbose stack     at _drainQueueStep (C:\Program Files\nodejs\node_modules\npm\node_modules\bluebird\js\release\async.js:142:12)
17 verbose stack     at _drainQueue (C:\Program Files\nodejs\node_modules\npm\node_modules\bluebird\js\release\async.js:131:9)
17 verbose stack     at Async._drainQueues (C:\Program Files\nodejs\node_modules\npm\node_modules\bluebird\js\release\async.js:147:5)
17 verbose stack     at Immediate.Async.drainQueues [as _onImmediate] (C:\Program Files\nodejs\node_modules\npm\node_modules\bluebird\js\release\async.js:17:14)
17 verbose stack     at processImmediate (internal/timers.js:456:21)
18 verbose cwd C:\Users\Josh\Desktop\gig-fort\gig-fort
19 verbose Windows_NT 10.0.18362
20 verbose argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "i" "react-router-dom"
21 verbose node v12.16.0
22 verbose npm  v6.13.4
23 error Cannot read property 'match' of undefined
24 verbose exit [ 1, true ]
4

1 回答 1

0

matchin参数是 URL 中的react-router-domget 参数。

所以,如果你有一个网址:

http://www.example.com/route?id=foo

然后match.params.id是“foo”。

您将 match 参数传递到您的功能性反应组件中以访问它。

例如

import React from 'react'

const MyComponent = ({match}) => {

return(<div>
The id is: {match.params.id}
</div>)

}

export default MyComponent

文档:https ://reactrouter.com/web/api/match

于 2020-09-28T10:49:16.097 回答