在实际开发中,不同的npm版本、node版本可能会导致某些项目无法正常工作,因为不同版本的npm可能具有不同的功能和行为。在修改npm版本之前,请确保你了解可能会带来的潜在影响,并确保你的项目可以适应所选的npm版本。
【背景】
在编译过程中发生报错,排查后发现在vue.config的配置文件中对于process.env的获取依赖于node与npm版本。
process.env
是 Node.js 中的一个环境对象;其中保存着系统的环境的变量信息,可使用 Node.js 命令行工具直接进行查看。
-
process.env.NODE_ENV(环境变量)
:-
这个变量主要用于标识当前的环境(生产环境,开发环境)。
-
默认是没有这个环境变量的,需要自己手动配置。
-
其值通常为“production”(生产环境)和“development”(开发环境),或者“prod”和“dev”,以此来区分不同环境下的逻辑行为。
-
-
process.env.npm_config_argv(环境变量)
:-
保存了当前运行的npm命令和其参数,值是一个JSON字符串,其中包含了命令行参数的详细信息。
-
通过解析该字符串,我们可以获取到当前npm命令及其参数的具体值。
-
在使用Webpack进行打包时,判断
process.env.npm_config_argv
的值通常是为了根据命令行参数来决定打包的行为。
-
【问题】
由于以下原因,导致项目编译过程中出现报错:
process.env.npm_config_argv的含义
查看后发现本地的npm版本为9.8.1过高导致取值失败,因此采取降版本操作。(查看当前npm版本)
在降版本过程中,发现即便终端显示已经安装包成功,但是npm -v后仍然为固定的版本,因此进一步进行问题排查。(更新后的npm版本信息)
处理过程:
1、怀疑package版本锁死,因此,修改package.json内npm版本号信息,并删除package-lock.json和node_modules 执行npm install 完成重新安装,发现文件内版本号已发生改变,但是获取版本信息仍为高版本。
2、怀疑是由于安装路径和读取路径不一致导致的问题。
电脑中存在两个npm文件,一个在npm的安装路径,另一个是npm的全局安装路径,两个npm的路径不相同,而我们更新的是npm安装路径下的npm,使用的是npm的全局安装路径下的npm。
#npm 更改全局安装包的默认位置#_npm下载的安装路径怎么换-CSDN博客
修改npm全局安装包的位置路径_修改npm root -g的目录-CSDN博客
npm显示升级到最新版本仍然显示npm为原版本的问题解决_npm 最新版本-CSDN博客
-
查看安装路径——npm root -g
-
全局安装路径——npm config get prefix
-
修改安装路径——npm config set prefix 【安装路径】
-
更新npm包——更新到最新版本:npm install -g npm;更新到指定版本:npm install npm@指定版本 -g。
如还不生效,可采取清npm缓存,重新启动的方式进行更新,在终端内检查结果已经更新。