gpt4 book ai didi

node.js - Yarn 2 工作区未安装依赖项

转载 作者:行者123 更新时间:2023-12-04 11:14:16 28 4
gpt4 key购买 nike

我正在测试设置 yarn 2 工作区。我想我已经按照我应该的方式完成了,但是当我运行时 yarn install从根开始,它不会安装任何模块,也不会按预期创建依赖项的符号链接(symbolic link)。我有以下文件夹结构

root/
package-a/
package-b/
每个都包含一个 package.json,每个包文件夹都包含一个 index.js。这是 package.json 文件
根:
{
"name": "yarn-workspaces-poc",
"version": "1.0.0",
"license": "MIT",
"private": true,
"workspaces": [
"package-a/",
"package-b/"
]
}
包-a:
{
"name": "package-a",
"version": "1.0.0",
"type": "module",
"dependencies": {
"cross-env": "5.0.5",
"package-b": "workspace:*"
}
}
包-b:
{
"name": "package-b",
"version": "1.0.0",
"type": "module",
"main": "index.js",
"dependencies": {
"cross-env": "5.0.5"
}
}
这是js文件
包-a/index.js
import test from "package-b";
console.log('testing');
console.log(test());
包-b/index.js
export default function b() {
console.log("From b. You made it!");
}
预期的行为是当我运行时 yarn install从根 Node 将在那里创建一个 node_modules 文件夹。它应该包含 cross-env 包以及一个符号链接(symbolic link)到 package-b 的文件夹。然而,没有任何东西被创建。这是命令的输出:
➤ YN0000: ┌ Resolution step
➤ YN0000: └ Completed
➤ YN0000: ┌ Fetch step
➤ YN0000: └ Completed
➤ YN0000: ┌ Link step
➤ YN0000: └ Completed
➤ YN0000: Done in 0s 96ms
编辑:
另外,如果我只是运行 package-a 来测试它,结果是:
internal/process/esm_loader.js:74
internalBinding('errors').triggerUncaughtException(
^

Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'package-b' imported from /root/package-a/index.js
Did you mean to import package-b/index.js?
at packageResolve (internal/modules/esm/resolve.js:655:9)
at moduleResolve (internal/modules/esm/resolve.js:696:18)
at Loader.defaultResolve [as _resolve] (internal/modules/esm/resolve.js:810:11)
at Loader.resolve (internal/modules/esm/loader.js:86:40)
at Loader.getModuleJob (internal/modules/esm/loader.js:230:28)
at ModuleWrap.<anonymous> (internal/modules/esm/module_job.js:56:40)
at link (internal/modules/esm/module_job.js:55:36) {
code: 'ERR_MODULE_NOT_FOUND'
}

最佳答案

创建一个 .yarnrc.yml在你的 monorepo 的根部,
向其添加以下属性:

nodeLinker: node-modules
也许 Yarn 2 最显着的变化是 PnP 系统。告别 node_modules这是默认行为,除非您指定“传统” node-modules链接器
记录 here
奖金信息
对于单独部署包有时有助于防止 node_modules 的提升。到根。
你可以加
nmHoistingLimits: workspaces
.yarnc.yml确保每个包都直接在包级别安装了它们的依赖项。
这比旧的 noHoist: [*/**] 强大得多从 yarn 1.

关于node.js - Yarn 2 工作区未安装依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66819276/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com