npm 安装挂在 WS2L 上的可选依赖项 - 第二次工作

问题描述 投票:0回答:1

npm 停止的有趣问题,然后在开发 Windows/WSL2 Ubuntu 机器上再次运行。

Windows 10、运行 Ubuntu 22.04 LTS 的 WSL2。网络上没有代理或额外的防火墙。

  • nvm:0.40.1
  • 节点:22.11.0
  • npm:10.9.0

package.json(部分)

"devDependencies": {
  "react-email": "3.0.2"
}

然后安装

# will reliably fail each time if I do this
npm cache clean --force

# will fail the first time
# then work if I run it again
npm install --verbose

enter image description here

会这样坐6个小时,然后继续或Ctrl C退出,然后:

enter image description here

再次运行,就可以了。

我是 Node 和 npm 的初学者。

npm npm-install
1个回答
0
投票

该问题似乎源于在 Windows/WSL2 环境中使用

npm
时的一些常见原因,尤其是在 Ubuntu 中。以下是针对此设置量身定制的分步故障排除指南:

  1. 清除npm和Node缓存: 有时,缓存不一致可能会导致

    npm
    停止或失败。由于您已经在使用
    npm cache clean --force
    ,因此已涵盖此步骤,但您可能还想清除
    nvm
    (节点版本管理器)的缓存以排除进一步的缓存问题。

    nvm cache clear
    
  2. 确保一致的权限: WSL2 和

    npm
    可能存在权限问题,从而导致延迟。确保您的
    ~/.npm
    ~/.config
    目录具有正确的权限:

    sudo chown -R $(whoami) ~/.npm
    sudo chown -R $(whoami) ~/.config
    
  3. 设置 npm 的网络配置: 有时,WSL2 中的缓慢网络配置会影响

    npm
    获取包的能力。您可以尝试配置不同的注册表超时,看看是否可以缓解停顿问题:

    npm set fetch-retry-mintimeout 20000
    npm set fetch-retry-maxtimeout 120000
    npm set fetch-retry-factor 10
    
  4. 在 npm 中禁用 IPv6(如果适用): 在某些情况下,npm 可能默认使用 IPv6,这可能会导致某些网络设置出现问题。禁用它可能会改善连接并防止停顿。

    npm set prefer-online false
    npm set use-ipv4 true
    
  5. 检查 DNS 配置: WSL2 可能存在影响

    npm
    安装的 DNS 解析问题。您可以通过修改您的
    /etc/resolv.conf
    文件来更新您的 DNS 设置以使用可靠的 DNS 服务(例如 Google DNS 或 Cloudflare DNS):

    sudo nano /etc/resolv.conf
    

    添加以下行:

    nameserver 8.8.8.8
    nameserver 8.8.4.4
    
  6. 暂时使用不同的 npm 镜像: 将注册表更改为镜像可以帮助防止默认

    npm
    注册表出现特定连接问题。

    npm set registry https://registry.npmjs.org/
    
  7. 验证 nvm 和节点版本: 有时,某些版本的

    npm
    node
    会存在导致意外行为的错误。您可能想尝试 Node.js 的稳定 LTS 版本,例如
    18.x
    20.x
    ,而不是
    22.11.0

    nvm install 20
    nvm use 20
    
  8. 运行

    npm install
    两次作为临时解决方案: 正如您所注意到的,安装有时会在第二次运行
    npm install
    后完成。如果您很着急,此解决方法可能暂时足够,但最好按照上述步骤找到根本原因。

  9. 检查WSL2的网络配置: WSL2 在某些版本的 Windows 10 中存在已知的网络问题。确保您运行的是应用了所有更新的最新版本的 Windows,并考虑更新您的 WSL2 安装:

    wsl --update
    
  10. 启用详细日志记录以获取更多详细信息: 为了更深入地了解停顿期间发生的情况,您可以启用更详细的日志记录:

    npm install --loglevel=silly
    

遵循这些步骤应该有助于缩小问题范围。

© www.soinside.com 2019 - 2024. All rights reserved.