Vite初始化项目并执行启动命令后报错

问题说明

通过npm init vite@latest命令初始化一个vue项目,然后依次执行npm install以及npm run dev,安装依赖命令正常运行,而启动命令报错:

$ npm run dev

> dev
> vite

events.js:352
      throw er; // Unhandled 'error' event
      ^

Error: spawn I:\vite-project\first-project\node_modules\esbuild\esbuild.exe ENOENT
    at Process.ChildProcess._handle.onexit (internal/child_process.js:269:19)
    at onErrorNT (internal/child_process.js:467:16)
    at processTicksAndRejections (internal/process/task_queues.js:82:21)
Emitted 'error' event on ChildProcess instance at:
    at Process.ChildProcess._handle.onexit (internal/child_process.js:275:12)
    at onErrorNT (internal/child_process.js:467:16)
    at processTicksAndRejections (internal/process/task_queues.js:82:21) {
  errno: -4058,
  code: 'ENOENT',
  syscall: 'spawn I:\\vite-project\\first-project\\node_modules\\esbuild\\esbuild.exe',
  path: 'I:\\vite-project\\first-project\\node_modules\\esbuild\\esbuild.exe',
  spawnargs: [ '--service=0.12.15', '--ping' ]
}

版本信息

$ node -v
v14.17.3
$ npm -v
7.11.1

原因分析

看错误输出定位在esbuild,Vite通过esbuild进行预构建,因此需要安装esbuild。可能是安装失败了,故删除node_modules后重新进行npm install,仍然报错。第一时间想到的是node的版本问题,因为有在写electron&vue,因此有用多版本的node,切换了两个版本后仍然安装失败。于是去搜索相关的issues。
在Vite的issues中看到该反馈"npm run dev" failed because of esbuild. #2452,尤大的回答是:"Your esbuild install failed. This is not a vite issue, most likely an npm / registry / system permission problem."。
说明不是Vite本身的问题,可能是npm/registry/system导致的问题,干脆去esbuild的issues中看看有没有相同的情况,于是找到了Sometimes can't install esbuild with 3rd-party registry #921
经过尝试后确定原因是因为使用了第三方的registry(taobao),但是看评论说是npm版本7.0以上导致的问题...

解决方案

方式一:不使用第三方registry

  1. npm registry设置为npm默认的镜像仓库。
# nrm use npm
npm config set regisry https://registry.npmjs.org/
  1. 清理npm缓存(非必要步骤)
npm cache clean -f
  1. 重新用Vite进行项目的初始化,也可以直接重新安装依赖
    如果选择重新初始化的话,就正常使用npm init vite@latest就行了。
    而重新安装依赖的话,需要删除node_modulespackage-lock.json后,重新进行npm install
    经过测试,cnpmtaobao都会报错,而npmyarn registry可以正常运行,原因未知。

方式二:手动执行安装命令

在用第三方registry进行npm install之后,执行

node node_modules/esbuild/install.js

手动安装一下esbuild

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇