奇异问题之解决思路(一) npm run dev或npm run buil报错,单独运行scripts又正常?

本文详细记录了一次使用Rollup进行项目打包时遇到的诡异问题及其解决过程。作者通过逐步排查,从命令行错误出发,检查package.json、依赖版本,最终定位到rollup版本差异导致的打包失败。通过统一rollup版本,成功解决了问题。

问题描述

我想使用rollup打包自己写的一个工具类库,于是手动搭建了一个rollup工程(工程源码详见评论地址分享)
全局安装rollup:npm install rollup -g
进入工程安装各项依赖,编辑配置文件,执行rollup -c -w可正常监听 src 目录,实时构建
将上述命令写入package.json文件中的scripts字段里,执行:npm run dev报错,字面意思是读取package.json失败
同样的rollup -c打包正常,npm run build读取package.json失败
问题就这样莫名其妙的产生了

分析产生原因

  1. 仔细检查package.json是否有写的不正确的地方 => 并没有
  2. 检查其他模块运行是否正常:执行npm run lint,可正常使用eslint检测代码规范 => 结论:package.json肯定没问题
  3. 跟打包相关的就只有另外一个项目配置文件了,但是rollup -c命令又是正常,说明我们的配置文件正确 => 此时的我已经处于崩溃边缘,休息一个周末再说!
  4. 最后可能存在的问题就是依赖包版本不正确,全局的rollup命令正常的,那么查看一下全局版本:rollup -v => 0.66.6,在检查下本地的版本(package.json中的devDependencies有记录)为0.38.0
  5. => 难道是因为这点儿版本号的差距导致的吗?不能忍,将package.json中的rollup版本号改为0.66.6,并去掉前面的^符号,删除node_modules目录,重新安装依赖
  6. 执行npm run build => 正确的打包了我们的项目!!!,至此问题原因和解决方法都有了

小小总结下吧

  1. 遇到此类问题要仔细的分析产生的原因,知道原因了自然就有解决办法了
  2. 分析原因的方法:由小到大,先自己在他人,先局部在整个项目分析。
  3. 简单理解:先看看执行的命令语句是否有问题,第二步再看调用该语句的文件是否有问题(这里的package.json),最后再看整个项目的配置是否不正确(包括项目配置文件、项目依赖、包文件目录路径等)

愿佛祖保佑大家无难解决的问题&Bug

                     _ooOoo_",
                    o8888888o",
                    88\" . \"88",
                    (| -_- |)",
                    O\\  =  /O",
                 ____/`---'\\____",
               .'  \\\\|     |//  `.",
              /  \\\\|||  :  |||//  \\",
             /  _||||| -:- |||||-  \\",
             |   | \\\\\\  -  /// |   |",
             | \\_|  ''\\---/''  |   |",
             \\  .-\\__  `-`  ___/-. /",
           ___`. .'  /--.--\\  `. . __",
        .\"\" '<  `.___\\_<|>_/___.'  >'\"\".",
       | | :  `- \\`.;`\\ _ /`;.`/ - ` : | |",
       \\  \\ `-.   \\_ __\\ /__ _/   .-` /  /",
  ======`-.____`-.___\\_____/___.-`____.-'======",
                     `=---='",
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^",
           佛祖保佑       永无BUG"
### 问题分析 在运行 `npm run dev` 时提示 `'vite' 不是内部外部命令`,这通常表明系统无法找到 `vite` 命令的可执行文件。这种问题可能由以下几个原因导致: 1. **未全局安装 Vite** 如果 `vite` 没有全局安装,命令行工具将无法识别 `vite` 命令。通常,Vite 作为开发依赖安装在项目中,但有时需要全局安装以确保命令可用。 2. **未正确安装项目依赖** 如果项目依赖未正确安装,`vite` 可执行文件可能不会出现在 `node_modules/.bin` 目录中,导致命令执行失败。 3. **缺少 `package-lock.json` 文件** 在某些情况下,如果项目中没有 `package-lock.json` 文件,依赖项可能无法正确解析和安装,导致 `vite` 命令不可用。 4. **Node.js 版本不兼容** 如果 Node.js 版本过低,可能会导致某些包无法正常工作,例如 `vite` 要求 Node.js 14.18.x、16.x 更高版本。 ### 解决方案 1. **确保 `vite` 已正确安装** 如果 `vite` 未作为开发依赖安装,可以通过以下命令进行安装: ```bash npm install --save-dev vite ``` 如果 `vite` 需要全局安装,可以使用以下命令: ```bash npm install -g vite ``` 2. **重新安装依赖并生成 `package-lock.json`** 删除 `node_modules` 文件夹和 `package-lock.json`(如果存在),然后确保 `npm` 配置中启用了 `package-lock`。可以通过编辑 `npm` 配置文件(通常位于 `node_modules/npm` 中)并添加以下行: ```ini package-lock = true ``` 然后重新安装依赖: ```bash npm install ``` 这将生成 `package-lock.json` 文件,并确保依赖项正确解析。 3. **检查 `package.json` 中的 `dev` 脚本** 确保 `package.json` 中的 `scripts` 部分包含正确的 `dev` 命令。例如: ```json "scripts": { "dev": "vite" } ``` 4. **检查 Node.js 版本** 使用以下命令检查当前 Node.js 版本: ```bash node -v ``` 如果版本低于 14.18.x,建议升级到支持的版本(16.x 18.x)。 5. **使用 `npx` 运行 Vite** 如果 `vite` 未全局安装,但已作为开发依赖安装在项目中,可以尝试使用 `npx` 来运行 Vite: ```bash npx vite ``` 6. **检查环境变量** 确保 `node_modules/.bin` 目录已添加到系统路径中。如果未添加,可以手动添加使用以下命令临时添加: ```bash export PATH=$(npm bin):$PATH ``` ### 示例代码 以下是 `package.json` 中的 `scripts` 配置示例: ```json { "name": "my-vite-project", "version": "1.0.0", "scripts": { "dev": "vite" }, "devDependencies": { "vite": "^4.0.0" } } ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值