pnpm 常见问题处理
当使用
npm/yarn
一切正常,而pnpm
出现问题,尝试以下解决方法
解决方案1
如果出现问题,可以使用 node-linker=hoisted 设置。这会创建一个类似于 npm 创建的平坦的 node_modules 结构。
解决方案2
在以下示例中,一个依赖项在其自己的依赖列表中没有 iterall
模块。解决有缺陷的包缺少依赖项的最简单解决方案是将 iterall
添加为我们项目 package.json 的依赖项。您可以通过 pnpm add iterall
安装它,它将自动添加到您的项目 package.json 中。
"dependencies": {
...
"iterall": "^1.2.2",
...
}
解决方案3
其中一种解决方案是使用钩子将缺失的依赖项添加到包的 package.json 中。它之前与 pnpm 不兼容。现在这个问题已经解决,它现在可以与 pnpm 一起工作了。它曾经抛出一个错误:
Error: Cannot find module 'babel-traverse'
at /node_modules/inspectpack@2.2.3/node_modules/inspectpack/lib/actions/parse
解决方案是创建一个包含以下内容的 .pnpmfile.cjs
:
module.exports = {
hooks: {
readPackage: (pkg) => {
if (pkg.name === "inspectpack") {
pkg.dependencies['babel-traverse'] = '^6.26.0';
}
return pkg;
}
}
};
创建 .pnpmfile.cjs 后,只需删除 pnpm-lock.yaml - 不需要删除 node_modules,因为 pnpm 钩子只影响模块解析。然后,重新构建依赖项,它应该就可以工作了。
使用electron-vite脚手架,打包后运行出现的错误 Class extends value undefined is not a constructor or null
新增||修改 .npmrc
electron_mirror=https://npmmirror.com/mirrors/electron/
electron_builder_binaries_mirror=https://npmmirror.com/mirrors/electron-builder-binaries/
+ shamefully-hoist=true
+ node-linker=hoisted
实际在electron-builder的官网有提及到:https://www.electron.build/index.html
要使用 pnpm,您需要调整您的 .npmrc 以使用以下任何一种方法,以便正确打包您的依赖项(参考:#6389):
node-linker=hoisted
public-hoist-pattern=*
shamefully-hoist=true
注意:将 shamefully-hoist 设置为 true 与将 public-hoist-pattern 设置为 * 相同。
安装编译报错
⨯ cannot execute cause=fork/exec C:\Users\LK\AppData\Local\pnpm\global\5\.pnpm\pnpm@9.0.4\node_modules\pnpm\bin\pnpm…
│ command='C:\Users\LK\AppData\Local\pnpm\global\5\.pnpm\pnpm@9.0.4\node_modules\pnpm\bin\pnpm.cjs' r…
│ workingDir=
C:\Users\{用户名}\AppData\Local\pnpm\global\5\node_modules\pnpm\bin
使用 #!node
替换 #!/usr/bin/env node