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

如何在Nix Shell中同步Node与Yarn的Node版本?

解决Yarn与全局NodeJS版本不一致的问题

你的问题出在Nix打包的nodePackages.yarn默认绑定了它自身依赖的NodeJS版本,和你单独指定的nodejs-17_x不是同一个。要同步版本,需要通过Nix覆盖层(overlay)强制让Yarn使用你指定的NodeJS版本,修改后的replit.nix配置如下:

{ pkgs }:
let
  # 定义覆盖层,替换Yarn依赖的NodeJS版本
  yarnNodeOverlay = final: prev: {
    nodePackages = prev.nodePackages // {
      yarn = prev.nodePackages.yarn.overrideAttrs (oldAttrs: rec {
        nodeDependencies = oldAttrs.nodeDependencies // {
          nodejs = final.nodejs-17_x;
        };
      });
    };
  };
  # 应用覆盖层后的新pkgs集合
  modifiedPkgs = pkgs.extend yarnNodeOverlay;
in {
  deps = [
    modifiedPkgs.nodejs-17_x
    modifiedPkgs.nodePackages.yarn
  ];
}

配置说明

  • 通过pkgs.extend创建包含自定义覆盖层的新包集合modifiedPkgs
  • 覆盖层里用overrideAttrs修改yarn的nodeDependencies,将其依赖的nodejs替换为你需要的nodejs-17_x
  • 最后在deps里引用修改后的包,确保Yarn和全局NodeJS使用同一版本

修改完成后重新加载环境,执行yarn node -v应该就会返回17.3.1,和node -v版本一致了。

内容的提问来源于stack exchange,提问作者Tristan F.-R.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 09:25:27