解决 pnpm dev 运行报错的坎坷历程

解决 pnpm dev 运行报错的坎坷历程

在项目开发过程中, 在clone 完别人的代码后启动项目时:nodejspnpm 版本都没问题 ,但是 无法运行 pnpm dev 命令启动项目时,往往会遇到各种各样的报错问题。最近在处理 yudao-ui-admin-vue3 项目时,就接连遭遇了多个棘手的错误,经过一番摸索和尝试,最终成功解决。现将整个解决过程记录下来,希望能帮助到遇到类似问题的开发者。

一、Command "dev" not found 错误

问题描述

首次运行 pnpm dev 时,出现错误提示  ERR_PNPM_RECURSIVE_EXEC_FIRST_FAIL  Command "dev" not found,这意味着 pnpm 找不到名为 dev 的脚本命令。

原因分析

这种情况通常是由于项目根目录下的 package.json 文件中,scripts 字段缺少 dev 脚本配置,或者依赖未正确安装导致相关命令无法执行。

解决过程

  1. 检查 package.json 配置
    打开项目根目录下的 package.json 文件,找到 scripts 字段,确认其中是否有 dev 相关的配置。我的项目中该字段内容如下:
json 复制代码
{
  "name": "yudao-ui-admin-vue3",
  "version": "2.4.1-snapshot",
  "scripts": {
    "dev": "vite --mode env.local",
    "build": "vite build",
    "preview": "vite preview"
  },
  "dependencies": {
    // 其他依赖...
  },
  "devDependencies": {
    // 其他开发依赖...
  }
}

可以看到,dev 脚本配置是存在的,说明不是脚本缺失的问题,可能是依赖安装异常导致。

  1. 重新安装依赖

在终端中进入项目根目录(如果还未进入),执行以下命令删除 node_modules 目录和 pnpm-lock.yaml 文件(如果存在):

bash 复制代码
# 删除 node_modules 目录
rm -rf node_modules
# 删除 pnpm-lock.yaml 文件(如果存在)
rm pnpm-lock.yaml

然后重新运行 pnpm install 安装依赖:

bash 复制代码
pnpm install

然而,再次执行 pnpm dev 后,该错误依旧存在,说明问题尚未解决,需要进一步排查。

二、Permission denied 错误

问题描述

在重新安装依赖后再次运行 pnpm dev,出现了新的错误提示 sh: /Users/ljj/Downloads/code_1/code 2/yudao-ui-admin-vue3/node_modules/.bin/vite: Permission denied,表示没有执行 vite 命令的权限。

原因分析

在 Linux 和 macOS 系统中,文件权限控制着用户对文件的读、写和执行操作。出现此错误,是因为当前用户对 vite 文件没有执行权限。

解决过程

使用 chmod 命令给 vite 文件添加可执行权限。在项目根目录下执行以下命令:

bash 复制代码
chmod +x node_modules/.bin/vite

chmod +x 命令用于给文件添加可执行权限。执行完这个命令后,再次运行 pnpm dev。这次虽然没有了权限错误,但又出现了新的报错。

三、ERR_MODULE_NOT_FOUND 错误

问题描述

运行 pnpm dev 后,出现了如下错误信息:

复制代码
> vite --mode env.local

node:internal/errors:496
    ErrorCaptureStackTrace(err);
    ^

Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'esbuild' imported from /Users/ljj/Downloads/code_1/code 2/yudao-ui-admin-vue3/node_modules/vite/dist/node/cli.js
    at new NodeError (node:internal/errors:405:5)
    at packageResolve (node:internal/modules/esm/resolve:916:9)
    at moduleResolve (node:internal/modules/esm/resolve:973:20)
    at defaultResolve (node:internal/modules/esm/resolve:1206:11)
    at ModuleLoader.defaultResolve (node:internal/modules/esm/loader:404:12)
    at ModuleLoader.resolve (node:internal/modules/esm/loader:373:25)
    at ModuleLoader.getModuleJob (node:internal/modules/esm/loader:250:38)
    at ModuleWrap.<anonymous> (node:internal/modules/esm/module_job:76:39)
    at link (node:internal/modules/esm/module_job:75:36) {
  code: 'ERR_MODULE_NOT_FOUND'
}

Node.js v18.20.8
 ELIFECYCLE  Command failed with exit code 1.

该错误表明 Node.js 无法找到 esbuild 包,而 esbuild 是 Vite 构建工具依赖的重要包,缺少它会导致 Vite 无法正常启动。

原因分析

可能是依赖安装过程中出现问题,导致 esbuild 包没有正确安装到项目中。

解决过程

  1. 再次重新安装依赖
    为了确保依赖安装的完整性,再次删除 node_modules 目录和 pnpm-lock.yaml 文件(如果存在),执行命令:
bash 复制代码
# 删除 node_modules 目录
rm -rf node_modules
# 删除 pnpm-lock.yaml 文件(如果存在)
rm pnpm-lock.yaml

然后重新执行 pnpm install 安装依赖:

bash 复制代码
pnpm install

执行完后,运行 pnpm dev,问题仍然存在,说明单纯重新安装所有依赖无法解决该问题。

  1. 手动安装 esbuild

既然自动安装没有解决 esbuild 包缺失的问题,那么我们尝试手动安装 esbuild 包。在项目根目录下的终端中执行以下命令:

bash 复制代码
pnpm install esbuild --save-dev

--save-dev 参数表示将 esbuild 作为开发依赖安装到项目中。安装完成后,再次运行 pnpm dev。这次,项目终于成功启动!

总结

在解决 pnpm dev 运行报错的过程中,我们遇到了依赖配置、文件权限和依赖缺失等多种问题。通过逐步排查和针对性的解决措施,最终使项目能够顺利启动。在遇到类似问题时,我们可以从以下几个方面入手:

  1. 仔细检查 package.json 文件中的脚本配置和依赖列表,确保 dev 脚本存在且依赖完整。
  2. 确保文件和目录具有正确的权限,特别是可执行文件,如遇到权限问题,使用 chmod 命令进行调整。
  3. 当依赖安装出现问题时,尝试多次重新安装或手动安装缺失的依赖包。
  4. 注意 Node.js 版本与项目依赖的兼容性,必要时使用 nvm 等工具进行版本切换。

最后! 如果以上你都试过了 还是不行 重启终端 或者重启电脑 清一下缓存就好了!!!

希望本文记录的详细解决过程能够为大家在开发过程中解决类似问题提供一些参考和帮助。如果大家还有其他更好的解决方法或遇到了不同的问题,欢迎在评论区交流分享!

相关推荐
你的人类朋友6 分钟前
❤️‍🔥BFF架构版的hello world
前端·后端·架构
德育处主任7 分钟前
p5.js 三角形triangle的用法
前端·数据可视化·canvas
有事没事实验室20 分钟前
node.js中的path模块
前端·css·node.js·html·html5
十盒半价30 分钟前
TypeScript + React:大型项目开发的黄金搭档
前端·typescript·trae
楚轩努力变强1 小时前
前端工程化常见问题总结
开发语言·前端·javascript·vue.js·visual studio code
鱼樱前端1 小时前
rust基础二(闭包)
前端·rust
菜鸟学Python1 小时前
Python web框架王者 Django 5.0发布:20周年了!
前端·数据库·python·django·sqlite
前端开发爱好者2 小时前
只有 7 KB!前端圈疯传的 Vue3 转场动效神库!效果炸裂!
前端·javascript·vue.js
pe7er2 小时前
RESTful API 的规范性和接口安全性如何取舍
前端·后端
Fly-ping2 小时前
【前端】JavaScript文件压缩指南
开发语言·前端·javascript