如何在vue3中使用element-ui?node-sass老项目踩坑

情况

同学买了一个项目,依赖搞半天运行不起来。
先说标题的结论,vue3中无法使用elementui,如果项目中有elementui,那么这个项目是一个vue2项目,应该把依赖改成vue2而不是3。

首先是node-sass,中途需要python2的环境和windows的c++组件(msbuild)。
为了避免更多麻烦,我使用了npm而不是pnpm和yarn甚至bun。

过程

node版本过高

  1. 安装fnm,安装完后需要配置
    终端打开powershell,使用vscode编辑powershell的配置文件(powershell登录时会运行这个文件,和linux的profile差不多)
code $profile

内容如下:

fnm env --use-on-cd --shell powershell | Out-String | Invoke-Expression

弄完后一直爆红,一看是path中有多余的分号,应该是以前遗留的环境。
2. 切换到node的v16版本

fnm use 16

版本不匹配

vue3和element不匹配。直接不让运行npm i命令,于是乎使用下面的--legacy-peer-deps选项,虽然没有解决问题,但是至少命令跑下去了。

npm i --legacy-peer-deps

卡在core-js

似乎不是网络的原因。
先前卡在这里我换了cnpm,但是换了cnpm后总是说缺少某个依赖,我怀疑是他的.store目录结构的影响。
cnpm将依赖放在node_modules.store目录下,如果某些node模块中有利用幽灵依赖bug的写法,那么有可能有问题(我猜的),然后我就换回了npm。
设置淘宝镜像后,使用npm

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

core-js卡得莫名其妙,遇到这个我就删了node_modules重新install。
有时候windows的rm命令会提示某些文件不存在,我们一般使用rimraf来删除文件。

npm i -g rimraf
rimraf node_modules

node-sass依赖问题

换到node16后,他提示需要python2依赖,于是去python官网装了个python2。

gcm python

如果正常,则下图应该显示2.xx的版本,比如2.7.xx。下图只是示例,3.x版本是不对的。
image

msbuild

https://visualstudio.microsoft.com/zh-hans/visual-cpp-build-tools/
我装完2022的相关c++依赖,发现没有作用。
然后网上搜了一下,有说用
windows-build-tools这个npm包的。
https://github.com/felixrieseberg/windows-build-tools

npm i -g windows-build-tools

过程中,跳出来Visual Studio Installer,但是我没关闭之前的窗口于是运行失败了。
image
后面我再打开Visual Studio Installer,发现多出一个名称类似于Visual Studio 5 生成工具的选项,于是我点击修改,由于前面中断,因此这里都下好了。
image
类似于下面这样,初始就会有要求的总空间
image

核心的依赖就是win10 sdk和MSVC 2017,大致是下面这样,另外还需要重启。
image
下面这个路径中会出现2017
image
找到类似下面这个路径(这里是2022因此不太一样,建议在文件管理器中看一看),加到Path里面。

C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\MSBuild\Current\Bin

由于vscode的环境变量不会跟着更新,所以建议用powershell终端来验证。
好像还需要重启一下。

到这里基本上node-sass就能安装成功了,项目能跑起来了。

页面空白

运行项目后发现:
Vue.use语句中,use为undefined报错。
实际上打印出来Vue也是undefined。
简单来说就是,项目中使用的依赖是vue3的,但是写法是vue2的,因此出错。
于是我写了vue3的写法,大致如下(省略了VueRouter)

import {createApp} from 'vue';
import App from '../App.vue';
const app = createApp();
app.use(App);

然后项目还是有问题。
然后我把依赖直接改成vue2,她妈的一切正常了。
写这个项目的人是不是脑子有问题?

npm i vue@2
posted @ 2025-05-23 19:19  魂祈梦  阅读(94)  评论(0)    收藏  举报