推送到 heroku 时无法读取未定义的 属性 'match'

Cannot read property 'match' on undefined on pushing to heroku

尝试将项目推送到 heroku - 在使用 heroku-cli 和连接到 Github 时遇到同样的错误。

错误日志:

-----> Building dependencies

       Installing node modules (package.json + package-lock)

       npm ERR! Cannot read property 'match' of undefined

Package.json

{
  "name": "myApp",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "react": "^16.7.0",
    "react-dom": "^16.7.0",
    "react-router-dom": "^4.3.1",
    "react-scripts": "2.1.3",
    "react-social-icons": "^4.1.0",
    "react-spring": "^7.2.10"
  },
...
  "eslintConfig": {
    "extends": "react-app"
  },
  "engines": {
    "node": "10.13.0"
  },
...
  "devDependencies": {
    "react": "^16.7.0"
  }
}

React 最初不在 devDependencies 中 - 将它放在那儿是为了修复早期的错误。

问题仍然存在。

此问题很可能与您的 package-lock.json 有关。此文件会导致很多问题,但建议您 check it into source.

话虽如此,以下两件事之一应该可以解决您的问题:

  1. 首先尝试在本地删除 package-lock.jsonnode_modules,然后重新安装所有依赖项:npm i。完成后再次尝试推送到 Heroku。
  2. 如果上述建议不起作用,只需在本地删除 package-lock.json 文件,提交更改,然后再次尝试推送到 Heroku。

此外,您不必将 react 列为开发依赖项。您可以从 package.json.

中删除它

只需删除锁定文件并重试即可。

我遇到了同样的问题,但是 none 上面提到的解决方案对我有用,我什至尝试使用 heroku-repo 插件清理我的远程仓库,顺便说一句,你可以使用 heroku plugins:install heroku-repo 然后是 heroku repo:reset -a appname 试试这个。

对我有用的解决方案是禁用 heroku 的 node_modules 缓存。 Heroku 维护一个缓存目录,该目录在构建之间持续存在。此缓存用于存储 npm、yarn 和 bower 的缓存。

尝试使用以下步骤。

  1. heroku config:set NODE_MODULES_CACHE=false
  2. 现在再次推送 - git push heroku master

您可能想从您的终端执行此操作 heroku config:set NODE_MODULES_CACHE=false。对于同样的错误,这对我们有用。