HafuHafu

  • 首页
  • 技术
    • 编程
    • 教程
  • 资源
  • 综合
    • 杂谈
  • ACG
    • Anime & Comic
    • Game
  • 用户中心
    • 登录
  1. 首页
  2. 编程
  3. 正文

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

2021-07-16 2695点热度 17人点赞 0条评论

目录

  • 问题说明
    • 版本信息
    • 原因分析
  • 解决方案
    • 方式一:不使用第三方registry
    • 方式二:手动执行安装命令

问题说明

通过npm init [email protected]命令初始化一个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 [email protected]就行了。
    而重新安装依赖的话,需要删除node_modules和package-lock.json后,重新进行npm install。
    经过测试,cnpm和taobao都会报错,而npm和yarn registry可以正常运行,原因未知。

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

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

node node_modules/esbuild/install.js

手动安装一下esbuild。

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: npm Vite
最后更新:2021-09-09

hafuhafu

将思绪寄托于流逝而过的日子里。

点赞
< 上一篇
下一篇 >

文章评论

取消回复

hafuhafu

将思绪寄托于流逝而过的日子里。

文章目录
  • 问题说明
    • 版本信息
    • 原因分析
  • 解决方案
    • 方式一:不使用第三方registry
    • 方式二:手动执行安装命令

COPYRIGHT © 2022 HafuHafu. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang