问个 Nodejs npm install 的问题

发布于 1周前 作者 gougou168 来自 nodejs/Nestjs

Angular 做的不多,问题可能比较简单,大家别笑话。

创建了一个 NODE 项目以后有了一个 PACKAGE.JSON, 定义了项目的 DEPENDENCY, NPM INSTALL 了之后有了 PACKAGE-LOCK.JSON. 里面是 NPM INSTALL 安装的具体版本。

那我现在把项目放到 GIT 上,别的 TEAM MEMBER 拿到 CODE, 他们第一次运行,需要保证他们使用/安装的版本和我的一样,是使用NPM INSTALL吗?我在 STACKOVERFLOW 上看到说可以使用NPM CI, 这个命令会检查安装的版本和 PACKAGE-LOCK 里面的版本是一致的。请问是应该使用这个命令吗?谢谢


问个 Nodejs npm install 的问题

20 回复

npm install 就可以


是的,使用 npm ci [会用且只会用] package-lock.json 里面的固定的依赖版本进行安装,保证环境一致。( npm install 在存在 lock 文件时是优先使用 lock 中的依赖版本进行安装)

不懂就问,除了 Angular 这个单词为啥其他的单词都大写

npm 比较慢,建议用 pnpm ,另外,
npm 依赖版本锁定要保留 package-lock.json;
pnpm 要保留 pnpm-lock.yaml

npm install 的话,就算存在 lock 文件,有时也会升级版本的

可以把 package 里面,依赖包的版本号前面的 ^去掉,强制锁定版本

5 楼说的对,要想完全按照 lock 文件装需要用 npm ci

哈哈,切换大小写和中文感觉很麻烦,搞糊涂了,后面干脆都大写了

6 楼的方法,无法锁定依赖的依赖的版本

npm ci 不会安装 devdependencies [开发依赖] 只会安装 dependencies [运行依赖] 。我理解还是确认好版本号,不使用 ^ ~ 等标记,锁死版本。
当然实际情况下我都直接 npm i[nstall] 。版本号也不管,实际没出过问题。

npm install package 可以同时修改 package-lock.json 和 package.json ,而不带参数的 npm install 只会修改 package-lock.json

npm install 不带参数,是不会升级版本的。

package-lock.json 已经帮你锁死版本了。

“npm install 在存在 lock 文件时是优先使用 lock 中的依赖版本进行安装”,请问 lock 文件的作用是什么呢

只要附带 lock 文件就行了,对方只要是开发就执行 npm i 。

#13 我记得比如你的 package.json 中有 a^1.1.1 ,当你安装后 lock 文件中锁定版本也是这个,当新版本 [email protected] 发布后,npm install 会安装 [email protected] 的。
我去实际试一下。

npm install 时会按照你 package.json 里依赖的版本锁定符号("^" “~” “”),自动升级 package-lock.json 。如果不想自动升级,可以用 npm ci ,ci 会先删除依赖文件夹然后跳过读取 package.json ,直接安装 package-lock.json 里指定的版本

老实说 nodejs 这块确实有诟病,想固定依赖基本上都得在 package.json 锁定版本,万一有的父依赖的子依赖有安全隐患,后续这个子依赖升级修复了,但是那个父依赖没升级,你想避免隐患的话只能去 package-lock.json 改子依赖的版本,然后一改就只能用 npm ci 安装,因为用 npm i 会自动修正

我之前修过一阵子依赖安全问题,经常遇到上述的情况,最后的手段就是手动在 package-lock.json 里锁定各个依赖的版本,然后只要这些父依赖没更新,这个项目就得一直用 npm ci 安装依赖

#13 #16 好像各个版本不同,最新版本是会锁死的。

当然,关于 Node.jsnpm install 问题,这里有一些常见的排查步骤和可能的解决方案。

首先,确保你的 Node.js 和 npm 已经正确安装。你可以在命令行中运行以下命令来检查版本:

node -v
npm -v

如果版本信息显示正常,那么继续尝试安装你需要的包。如果安装过程中出现问题,可以尝试以下几个步骤:

  1. 清除 npm 缓存: 有时候,npm 的缓存可能会导致安装问题。你可以运行以下命令来清除缓存:

    npm cache clean --force
    
  2. 检查 package.json: 确保你的 package.json 文件格式正确,没有语法错误。你可以使用 JSONLint 等工具来验证 JSON 格式。

  3. 使用详细日志模式: 如果安装失败,你可以尝试使用详细日志模式来获取更多信息:

    npm install --verbose
    
  4. 检查网络连接: npm 安装需要从远程仓库下载包,确保你的网络连接正常。

  5. 使用其他 npm 镜像: 如果你在中国大陆等地区,可能会因为网络问题导致 npm 安装失败。你可以尝试使用淘宝的 npm 镜像:

    npm config set registry https://registry.npmmirror.com
    

然后再尝试安装。

希望这些步骤能帮助你解决 npm install 的问题。如果问题仍然存在,请提供更详细的错误信息以便进一步排查。

回到顶部