啊?Vite构建Vue项目报错?这为啥啊?

1,083 阅读5分钟

> 省流版本:Vite构建Vue报错,原因是缺少VC++运行库。

完整版本:

今天闲来无事准备摸鱼,准备学习一下前端的知识,于是就瞄准了Vue框架。

正当我看到Vite构建Vue项目的文档时,发现区区几个命令就可以快速构建Vue项目,心想这还不简单,于是打算搞上一把。

`npm create vite@latest my-vue-app -- --template vue`
`cd my-vue-app `
`npm install `
`npm run dev`

前面似乎一切顺利,到了最后一步的时候突然开始报错

D:\vite_demo\my-vue-app>npm run dev 
> my-vue-app@0.0.0 dev 
> vite 
node:internal/modules/cjs/loader:1340 
return process.dlopen(module,path.toNamespacedPath(filename)); 
        ^ 
Error: The specified module could not be found.
\\?\D:\vite_demo\my-vue-app\node_modules\@rollup\rollup-win32-x64-msvc\rollup.win32-x64-msvc.node 
at Module._extensions..node (node:internal/modules/cjs/loader:1340:18) 
at Module.load (node:internal/modules/cjs/loader:1119:32) 
at Module._load (node:internal/modules/cjs/loader:960:12) 
at Module.require (node:internal/modules/cjs/loader:1143:19) 
at require (node:internal/modules/cjs/helpers:119:18) 
at Object.<anonymous> (D:\vite_demo\my-vue-app\node_modules\rollup\dist\native.js:60:48) 
at Module._compile (node:internal/modules/cjs/loader:1256:14) 
at Module._extensions..js (node:internal/modules/cjs/loader:1310:10) 
at Module.load (node:internal/modules/cjs/loader:1119:32) 
at Module._load (node:internal/modules/cjs/loader:960:12) { code: 'ERR_DLOPEN_FAILED' } 

Node.js v18.18.2

然后我去查看目标目录发现对应的文件确实是存在的,这时候开始上网搜同样的情况,可是没有搜到解决的办法。于是我福至心灵,请出了ChatGPT选手。

错误 ERR_DLOPEN_FAILED 表明 Node.js 在尝试通过 dlopen 加载一个原生模块时失败了,通常是因为找不到指定的 .node 文件。这个问题可能与不同的因素有关,例如原生模块不兼容当前的 Node.js 版本,或者该文件在文件系统中确实丢失了。

解决这个问题,你可以尝试以下步骤:

  1. 确认文件存在: 验证路径 D:\vite_demo\my-vue-app\node_modules\@rollup\rollup-win32-x64-msvc 下的 rollup.win32-x64-msvc.node 文件是否存在。如果文件不存在,可能是因为安装过程中有问题。

  2. 删除并重新安装 node_modules: 在项目目录下,删除 node_modules 文件夹和 package-lock.json 文件,然后重新安装所有依赖项:

    rd /s /q node_modules
    del package-lock.json
    npm install
    
  3. 检查 Node.js 版本兼容性: 有些原生模块可能尚未更新,以支持你使用的 Node.js 版本(在这个案例中是 v18.18.2)。你可以尝试降级 Node.js 到一个更稳定或者是该原生模块支持的版本。

  4. 重建原生模块: 使用 npm rebuild 命令尝试重新编译并安装原生模块。

    npm rebuild
    
  5. 清理 npm 缓存: 使用以下命令清理 npm 缓存,然后重试安装:

    npm cache clean --force
    
  6. 使用管理员权限: 在 Windows 上,使用管理员权限打开命令提示符或 PowerShell 并运行命令,以确保有足够的权限进行安装。

如果以上步骤都不解决问题,你可能需要查看 rollupvite 的 GitHub 仓库的 issue 页面,看看是否有其他用户遇到了类似的问题以及可能的解决方案。此外,如果这个问题始终存在,可能需要在项目中降低 Node.js 的版本,因为最新版本的 Node.js 有时可能会与某些依赖不兼容。使用 Node Version Manager (nvm) 或 nvm-windows 可以更容易地管理和切换 Node.js 的版本。

此时我发现GPT兄给出的解决办法并不能解决我的问题,于是开始进一步请教。

如果你已经尝试了所有提到的步骤,但问题仍然存在,你可以尝试以下进阶的排查方法:

  1. 查看完整的错误日志: 有时错误日志中包含的信息可能会指向问题的实际原因。如果有更多的输出信息,请审查它们以获取额外的线索。

  2. 在其他环境中测试: 尝试在不同的机器或操作系统上设置你的项目环境,看看问题是否仍然存在。这可以帮助你确定问题是否与特定的环境配置有关。

  3. 创建一个新的项目: 有时,项目配置中的某些问题可能导致模块加载失败。尝试创建一个全新的 Vite + Vue 项目,并看看问题是否复现:

    npm init vite@latest new-project --template vue
    cd new-project
    npm install
    npm run dev
    
  4. 检查文件系统和防病毒软件: 确保没有文件系统错误导致问题。在 Windows 上,可以使用磁盘检查工具(chkdsk)。同时检查你的防病毒软件或系统安全设置,确保它们没有阻止 Node.js 运行或修改文件。

  5. 手动下载.node文件: 作为最后的手段,你可以尝试从其他来源(如 GitHub 或其他可信网站)手动下载 rollup.win32-x64-msvc.node 文件,并放到出错的路径中。

  6. 联系支持或社区: 如果你的项目依赖于特定的原生模块,并且你怀疑是该模块的问题,可以尝试联系模块的维护者或社区寻求帮助。

  7. 提交GitHub Issue: 考虑到这个错误是在使用 Vite 时发生的,如果上述步骤都无法解决你的问题,可以在 Vite 的 GitHub 仓库提交一个 Issue。在提交时,提供尽可能详细的信息,包括你的操作系统、Node.js 版本、npm 版本、以及你已经尝试过的所有步骤和错误日志。

  8. 更换开发环境: 如果可能,尝试在一个不同的开发环境中工作,比如使用 Docker 容器或者其他虚拟化工具,这可以排除本地环境配置问题的可能性。

在你进一步调查之前,确保保存所有重要的工作,以防需要进行系统恢复或其他重大更改。

到了此时还是不能解决问题,然后想到是不是因为我的系统刚重装了Win11的缘故,就在我试图把系统恢复到Win10的时候,上面提到的【重构原生模块】引起了我的注意,再进一步询问后发现,有些模块需要C++的支持,于是就去网上找了个VC++的运行库。

image.png

安装完后果然问题就解决了!!!!

image.png

人生中宝贵的三个小时就如此流逝了。