pnpm monorepo中globals包未在顶层node_modules链接,ESLint无法识别怎么办?
在pnpm Monorepo中正确使用globals包的方案
核心解决方案:将globals安装为根目录开发依赖
你的eslint.config.mjs放在项目根目录,根目录代码依赖的包必须在根目录package.json中声明,pnpm才会在顶层node_modules创建对应符号链接。执行以下命令:
pnpm add -Dw globals
-D:标记为开发依赖-w:指定安装到工作区根目录(而非子工作区)
为什么之前的尝试无效?
- pnpm默认严格隔离各工作区依赖,根目录代码不会去子工作区的
node_modules查找依赖,所以即便在package2中添加globals依赖,根目录的ESLint配置也无法访问。 - 只有包被声明在根目录
package.json中,或通过pnpm hoist配置(不推荐随意修改,会破坏隔离性)强制提升时,才会出现在顶层node_modules。
验证方法
安装完成后,检查顶层node_modules目录下是否存在globals的符号链接,此时运行ESLint应能正常识别Node.js全局变量(如process),不会再报找不到globals包的错误。
内容的提问来源于stack exchange,提问作者philolegein
相关产品推荐
相关产品推荐

