一、由Vue: These relative modules were not found 引起的问题
1、vue2.6.14 These relative modules were not found
在使用vue2.6.14开发的项目在本地windows 10上都一直成功,想放到jenkins上进行发布。之前其它的 vue 项目也都能发布正常,但此次一个旧的vue项目发布时就是报错 These relative modules were not found:后面会列出加载不到的js文件列表
* ../lib/commonhelp.js in ./src/router/index.js
* ./lib/commonhelp.js in ./src/main.js
但从目录引用来看,也没有任何问题。
A. Vue中import 引入同一目录下的文件
import MyComponent from './MyComponent.vue';
B. import 上一级目录文件的方法,上两级的文件依此类推
import MyComponent from '../MyComponent.vue';
确定路径没有错的,在本地项目也可以run起来,但是放服务器环境就是报错:vue2.6 These relative modules were not found。在之前项目使用的是@来作为src的别名,在本地运行正常,但是在服务器上就是加载不了 @加载的模块,在 vue.config.js 文件中增加 配置 以及 configureWebpack 中添加如下代码无不能发布。
#尝试添加的2种路径别名
chainWebpack config.resolve.alias.set("@", resolve("src"))
alias: { '@': path.resolve(__dirname, 'src')},
2、node版本管理器:nvm 和
怀疑是node环境以及npm的版本区别,原来安装一个 node版本管理器 n,这次又尝试安装了 nvm,比较了一下。还是nvm 好使一些。本地和服务器上都使用的 node 16.18.0 环境。
node版本管理器:nvm 和 n区别,在 node 的版本管理工具中,nvm是常用的工具,不过 TJ 的 n 也有不少人用。这两个工具是目前最主流的版本管理方案。
删除和安装的n
npm install -g n nvm
npm uninstall -g n
两种方案如何选择?随各人所好,有以下几个要注意
- n在 node 安装和使用上的体验更好。
- Windows 上只能使用 n
- 频繁切换 node 版本,从全局模块兼容性的角度考虑,只能使用 nvm。
3、npm版本的安装切换过程中的问题记录
#. 期间使用 apt upgrade npm 中遇到一些问题。
问题1. encountered while processing: libc6:amd64 以及、libc-bin : Depends: libc6 (< 2.25) but 2.36-9+deb12u4 is installed
开始执行更新npm时报错:libc-bin : Depends: libc6 (< 2.25) but 2.36-9+deb12u4 is installed 提示我本地的libc6版本2.36 高于其要求的版本。
[#root] apt upgrade npm
You might want to run 'apt --fix-broken install' to correct these.
The following packages have unmet dependencies:
libc-bin : Depends: libc6 (< 2.25) but 2.36-9+deb12u4 is installed
Recommends: manpages but it is not installed
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).
但是执行 apt --fix-broken install 进行修复时又报错:
[#root] apt --fix-broken install
dpkg: error processing package libc6:amd64 (--configure):subprocess installed post-installation script returned error exit status 127
Errors were encountered while processing:libc6:amd64
E: Sub-process /usr/bin/dpkg returned an error code (1)
解决办法:
[#root] cd /tmp
[#root] apt -y download libcrypt1
[#root] dpkg-deb -x libcrypt1_1%3a4.4.33-2_amd64.deb .
[#root] cp -av lib/x86_64-linux-gnu/* /lib/x86_64-linux-gnu/
[#root] apt -y --fix-broken install
注意上面的 libcrypt1_1%3a4.4.33-2_amd64.deb 并不是一个固定的内容,需要先使用 ll 命令查看一下你下载下来的具体libcrypt文件名称,如我这里就是 libcrypt1_1%3a4.4.33-2_amd64.deb。
-rw-r--r-- 1 root root 89464 Jan 7 2023 libcrypt1_1%3a4.4.33-2_amd64.deb
这样期间碰到的这个问题就修复好了。
问题2. npm : Depends: node-gyp but it is not going to be installed
再次执行 apt upgrade npm 还是报错:
The following packages have unmet dependencies:
npm : Depends: node-gyp but it is not going to be installed
Recommends: node-tap but it is not going to be installed
这个是 apt 源的问题。搞了好多次,最后使用了清华的 DEBIAN 官网的源安装成功了 npm
deb http://mirrors.ustc.edu.cn/debian stable main contrib non-free
deb http://mirrors.ustc.edu.cn/debian stable-updates main contrib non-free
deb http://deb.debian.org/debian stretch main
deb http://deb.debian.org/debian stretch-updates main
encountered while processing apt-dpkg-install-kTh2Mk/181-libegl1_1.6.0-1_amd64.deb
[#root] sudo apt-get clean
[#root] sudo apt-get update
[#root] sudo apt-get -f install
使用--force-overwrite可以解决安装过程中的冲突。
sudo dpkg -i --force-overwrite /var/cache/apt/archives/libegl1_1.6.0-1_amd64.deb
问题3. 关于淘宝的仓库地址变更
npm error request to https://registry.npm.taobao.org/npm failed, reason: certificate has expired ,因为其地址已经变更为 https://registry.npmmirror.com 换成这个地址即可。如下为安装 npm 的最新版本。
b73:/etc/apt# npm install -g npm@latest
npm warn cli npm v10.8.0 does not support Node.js v16.12.0. This version...
npm error notsup Required: {"node":"^18.17.0 || >=20.5.0"}
pm error notsup Actual: {"npm":"10.8.0","node":"v16.12.0"}
# 查看已安装版本
6cb73:/etc/apt# nvm ls
# 查看远方仓库中的版本列表
6cb73:/etc/apt# nvm ls-remote
...
v22.2.0
73:/etc/apt# nvm install "v22.2.0"
#安装完成:
b6cb73:/etc/apt# npm --version
10.7.0
在上面这些方法都无法解决的情况下,最后我尝试将引入出现问题的这个模块名称(如 commonHelp.js) 改成 commonhelp.js 全部使用小写,想尝试看看能否成功,但还是一样的报错加载不到模块。先这样吧,暂时就不改成自动发布了。