【问题标题】:npm install gets the error "must provide string spec"npm install 收到错误“必须提供字符串规范”
【发布时间】:2022-01-09 21:05:48
【问题描述】:

我尝试执行两年前自己创建的旧 React 应用程序。当我尝试通过“npm install”运行应用程序时,出现以下错误:

npm ERR! must provide string spec
npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\tws80\AppData\Local\npm-cache\_logs\2022-01-09T21_00_13_180Z-debug.log

我的 package.json 文件的依赖关系:

  "dependencies": {
    "@material-ui/core": "^4.9.7",
    "@material-ui/icons": "^4.9.1",
    "@mdi/js": "^5.0.45",
    "@mdi/react": "^1.3.0",
    "@testing-library/jest-dom": "^4.2.4",
    "@testing-library/react": "^9.4.1",
    "@testing-library/user-event": "^7.2.1",
    "editor.formatOnPaste": true,
    "editor.formatOnSave": true,
    "husky": "^4.2.3",
    "i18next": "^19.3.3",
    "lint-staged": "^10.0.8",
    "prettier": "^1.19.1",
    "react": "^17.0.2",
    "react-dom": "^17.0.2", 
    "react-html-email": "^3.0.0",
    "react-i18next": "^11.3.3",
    "react-intl": "^4.1.1",
    "react-router-dom": "^5.1.2",
    "react-scripts": "^5.0.0"
  }

我当前的节点和 npm 版本:

node -v v16.13.1
npm -v 8.1.2

我想这个错误是由于旧的依赖关系造成的,但我没有找到任何有用的解决方法来解决这个问题。删除 node_modules 后,我仍然可以重新安装 node_modules。 感谢您的帮助。

【问题讨论】:

  • 什么版本的 NPM?你能发布你的 package.json 吗?
  • @Joe,谢谢!上面可以看到我的npm版本和pyckage.json
  • 您的 package.json 中还有其他部分吗?可能是 engines 部分,或者可能是不再允许的旧 cmets 部分 ("//": {})?
  • @Joe,在我的 package.json 中没有引擎部分,但在 package-lock.json 中有。另一方面,不存在旧的 cmets。

标签: node.js reactjs


【解决方案1】:

在 bash 终端中运行“rm -rf node_modules && rm -rf package-lock.json && npm i”为我修复了它。

在我的本地机器上运行 npm -v --> 8.3.0

【讨论】:

  • npm -i 根本不适合我。我的 npm 是 8.1.2,我应该升级吗?
  • 首先使用上面的 bash 命令清理 p.lock 和 node 模块;然后再试一次
  • npm i 不是 npm -i
【解决方案2】:

问题是您将一些包选项放入 package.json 的“依赖项”部分。我对自动前缀浏览器列表选项有同样的错误。删除 "editor.formatOnPaste": true"editor.formatOnSave": true 并且 npm install 将按预期工作 - 我确实在本地检查过。我的猜测是,在“dependencies”或“devDependencies”下,只有包的版本是预期的。

【讨论】:

    【解决方案3】:

    在我创建了一个新的 react 应用程序,然后将 package.json 从新应用程序复制并粘贴到旧应用程序中后,命令 npm install 确实有效。非常感谢!

    【讨论】:

      【解决方案4】:

      你能在 npm init 之后尝试同样的命令吗

      【讨论】:

      • 如果这是根据How to Answer 的答案,则需要一些editing 才能使其更加明显。目前看起来像是一个没有解释的调试建议,应该在评论中 - 并解释。 (虽然你可能知道meta.stackexchange.com/questions/214173/…
      • 我刚刚解决了同样的问题,想快速分享
      • 好的,那么请避免提出问题或提出实验的印象。请根据 How-to-Answer 进行编辑。
      • 请将其表述为一个解释性的有条件的答案,以避免给人一种提出澄清问题而不是回答的印象(应该使用评论而不是答案,比较meta.stackexchange.com/questions/214173/…)。例如像“如果你的问题是......那么解决方案是......因为......。”
      猜你喜欢
      • 1970-01-01
      • 2020-11-30
      • 2019-05-23
      • 1970-01-01
      • 2019-09-06
      • 2019-06-21
      • 2018-01-13
      • 1970-01-01
      • 2021-06-16
      相关资源
      最近更新 更多