电子商务网站开发系统,建h5网站费用,win2012搭建WordPress,网站开发背景设置起因
工作原因需要研究 vue-grid-layout 的源码#xff0c;于是下载到本地。因为我习惯使用 pnpm#xff0c;所以直接用 pnpm i 安装依赖#xff0c;npm run serve 启动失败。折腾了一番没成功。 看到源码里有 yarn.lock#xff0c;于是重新用 yarn install 安装依赖…起因
工作原因需要研究 vue-grid-layout 的源码于是下载到本地。因为我习惯使用 pnpm所以直接用 pnpm i 安装依赖npm run serve 启动失败。折腾了一番没成功。 看到源码里有 yarn.lock于是重新用 yarn install 安装依赖成功启动。
用 yarn 安装可以成功运行的项目 用pnpm 安装后却运行失败。 挺有意思的于是有了这篇 blog。
以前也遇到类似问题使用相同的包管理器但是 node 版本不同有的 node 版本安装的包能成功运行有的不能。 测试 npm yarn pnpm
请出今日受害者vue-grid-layout。在 github 上下载源码.zip。解压后复制成三份
vue-grid-layout-npmvue-grid-layout-yarnvue-grid-layout-pnpm
分别使用 npm yarn pnpm 安装依赖版本 node 16.0.0yarn 1.22.11pnpm 7.27.0。安装过程中都报了一些 warning 或 error暂时忽略。启动项目 npm run serve
npm 和 yarn 均可成功运行。pnpm 启动失败报错 Failed to resolve loader: cache-loader. You may need to install it. node-linkerhoisted
google 找到 pnpm issue: Failed to resolve loader: cache-loader You may need to install it.
pnpm maintainer 回复 按照他的方法尝试。新建项目 vue-grid-layout-pnpm-hoisted设置好 .npmrc 后 pnpm i 。再启动成功
官方描述 node-linkerhoisted 的含义 pnpm 默认node-linkerisolated) 安装的 node_modules子文件夹有30个。下图红框部分可以看到使用了 symbolic link 用 npm、yarn、或者设置了 node-linkerhoisted 的 pnpm 安装的 node_modules 子文件夹非常多npm 997yarn 994hoisted pnpm 1045因为所有直接间接的依赖都平铺在 node_modules 中了 使用原版 pnpm手动安装缺少的包
虽然上面使用 node-linkerhoisted 后可以继续用 pnpm 。但是失去了使用 pnpm 的意义了。
还是用“原版”的 pnpm 测试不修改 node-linker在 vue-grid-layout-pnpm 项目中手动安装 cache-loader启动仍报错 Failed to resolve loader: babel-loader
手动安装 babel-loader启动报错Syntax Error: TypeError: this.getOptions is not a function google了一下是包和包之间版本不匹配。但是通过报错信息看不出是哪个文件哪个包。在 node_modules 下全局搜索 this.getOptions锁定嫌疑人 babel-loader。用 pnpm why 查看 需要安装8.3.0版本但是刚刚安装的是9.1.3版本。重新安装pnpm i babel-loader8.3.0启动报错 Failed to resolve loader: vue-loader。 一个一个安装不知道什么时候才到尽头放弃了。还是研究研究为什么 pnpm 不安装这些包吧。 为什么 pnpm 没安装 cache-loader
其实 pnpm 安装了但是 webpack 没找到。 篇幅太长另开一篇 blog 解释TODO