You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

npm安装任意包均失败:找不到require-from-string@^1.1.0版本

解决npm找不到require-from-string@^1.1.0的问题

你遇到的核心问题是require-from-string@^1.1.0这个版本已经从npm官方仓库被移除了,而你的依赖链里旧版本的cosmiconfig刚好依赖这个不存在的版本,导致所有npm命令都卡在这个缺失的包上。下面给你几个可行的解决方案:

方案一:用npm shrinkwrap锁定可用版本(适合不想升级Node/npm的情况)

你的npm版本是v5.6.0,不支持后续版本的overrides功能,所以可以通过shrinkwrap来强制指定可用的版本:

  • 先在项目根目录创建一个临时的依赖声明(如果已有package.json可以跳过这步):
    {
      "dependencies": {
        "require-from-string": "1.2.1"
      }
    }
    
  • 执行安装命令,先把可用版本装到本地:
    npm install
    
  • 生成npm-shrinkwrap.json文件,这个文件会覆盖npm默认的依赖解析逻辑:
    npm shrinkwrap
    
  • 打开生成的npm-shrinkwrap.json,找到cosmiconfig的依赖部分,把它对require-from-string的版本要求改成"1.2.1"(或者"^1.2.1"),确保指向存在的版本。
  • 现在再执行你需要的npm命令(比如npm install @angular/cli),npm会优先使用shrinkwrap里指定的版本,不会再去找那个已经消失的1.1.0版本。

方案二:升级Node.js和npm到较新版本(推荐,彻底解决)

你的Node.js v8.9.4和npm v5.6.0都是非常老旧的版本,不仅缺少新功能,还存在安全风险。升级到LTS版本可以一劳永逸解决这类依赖问题:

  • 下载并安装Node.js的LTS版本(比如v16.x或v18.x,对应npm v8+),安装时直接覆盖现有版本即可。
  • 升级完成后,如果你还是遇到依赖问题,可以在项目的package.json里添加overrides字段,强制指定cosmiconfig使用可用的require-from-string版本:
    "overrides": {
      "cosmiconfig>require-from-string": "1.2.1"
    }
    
  • 最后执行你的安装命令:
    npm install @angular/cli
    

补充:验证问题根源

你可以通过这个命令查看旧版本cosmiconfig的依赖(如果npm还能执行的话):

npm view cosmiconfig@3.x dependencies

会看到它确实依赖require-from-string@^1.1.0,而这个版本已经从npm仓库被移除了,这就是所有命令失败的原因。

报错详情

1567 verbose type range
1568 verbose stack require-from-string: No matching version found for require-from-string@^1.1.0
1568 verbose stack at pickManifest (D:\ProgramFiles\nodejs\node_modules\npm\node_modules\pacote\node_modules\npm-pick-manifest\index.js:65:11)
1568 verbose stack at fetchPackument.then.packument (D:\ProgramFiles\nodejs\node_modules\npm\node_modules\pacote\lib\fetchers\registry\manifest.js:52:18)
1568 verbose stack at tryCatcher (D:\ProgramFiles\nodejs\node_modules\npm\node_modules\bluebird\js\release\util.js:16:23)
1568 verbose stack at Promise._settlePromiseFromHandler (D:\ProgramFiles\nodejs\node_modules\npm\node_modules\bluebird\js\release\promise.js:512:31)
1568 verbose stack at Promise._settlePromise (D:\ProgramFiles\nodejs\node_modules\npm\node_modules\bluebird\js\release\promise.js:569:18)
1568 verbose stack at Promise._settlePromise0 (D:\ProgramFiles\nodejs\node_modules\npm\node_modules\bluebird\js\release\promise.js:614:10)
1568 verbose stack at Promise._settlePromises (D:\ProgramFiles\nodejs\node_modules\npm\node_modules\bluebird\js\release\promise.js:693:18)
1568 verbose stack at Async._drainQueue (D:\ProgramFiles\nodejs\node_modules\npm\node_modules\bluebird\js\release\async.js:133:16)
1568 verbose stack at Async._drainQueues (D:\ProgramFiles\nodejs\node_modules\npm\node_modules\bluebird\js\release\async.js:143:10)
1568 verbose stack at Immediate.Async.drainQueues (D:\ProgramFiles\nodejs\node_modules\npm\node_modules\bluebird\js\release\async.js:17:14)
1568 verbose stack at runCallback (timers.js:789:20)
1568 verbose stack at tryOnImmediate (timers.js:751:5)
1568 verbose stack at processImmediate [as _immediateCallback] (timers.js:722:5)
1569 verbose cwd C:\Users\maart\Desktop\test
1570 verbose Windows_NT 10.0.16299
1571 verbose argv "D:\\ProgramFiles\\nodejs\\node.exe" "D:\\ProgramFiles\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "@angular/cli"
1572 verbose node v8.9.4
1573 verbose npm v5.6.0
1574 error code ETARGET
1575 error notarget No matching version found for require-from-string@^1.1.0
1576 error notarget In most cases you or one of your dependencies are requesting
1576 error notarget a package version that doesn't exist.
1576 error notarget
1576 error notarget It was specified as a dependency of 'cosmiconfig'
1577 verbose exit [ 1, true ]

内容的提问来源于stack exchange,提问作者Maartenw

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:46:28