标签: yarnpkg-v2

使用 Yarn 2 / Yarn PnP 时如何调试 Jest 测试

我想使用之前的答案笑话文档node --debug-brk中描述的功能在基于 npm/yarn 1 的项目中进行调试,但在基于 Yarn 2 / PnP(即插即用)的项目中不存在,因此这些指令不会为我工作。node_modules/

访问yarn 2中的二进制文件的常用方法是yarn run --inspect-brk jest --runInBand从终端启动调试会话,但是当通过连接到Chrome的远程目标检查器时chrome://inspect,我们收到一条错误消息,提示无法连接到jest.js二进制文件,因为它是一个路径到一个.zip文件。

Uncaught Error: Cannot find module '/Users/MY_USERNAME/PATH_TO_MY_PROJECT/.yarn/cache/jest-npm-24.9.0-8ddb425e99-2.zip/node_modules/jest/bin/jest.js
Run Code Online (Sandbox Code Playgroud)

在不降级到 Yarn 1 的情况下,有哪些解决方法可用?

jestjs yarnpkg-v2

5
推荐指数
2
解决办法
4063
查看次数

我如何在 Yarn 2 中共享工作区中的公共依赖项?

this的问题大致相同,但对于yarn 2.我将我的共享依赖项放在层次结构的顶部。我相信我目前没有使用 PnP。

.yarnrc.yaml

nodeLinker: node-modules
yarnPath: .yarn/releases/yarn-2.2.2.cjs
Run Code Online (Sandbox Code Playgroud)

typescript我想调用的“工作区”之一中,我已经在最顶层安装了(但我认为这可能是任何带有二进制文件的模块)tsc,但是command not found: tsc我也注意到了一些警告,例如。graph@workspace:app-lib/graph/packages/app doesn't provide jest@>=24 <25 requested by ts-jest@npm:24.3.0这是在应用程序的父级中提供的。

yarnpkg yarn-workspaces yarn-v2 yarnpkg-v2

5
推荐指数
1
解决办法
1238
查看次数

如何使用 Yarn 2 添加本地 .tgz 文件?

我正在尝试使用 Yarn 2 将模块安装到离线计算机上。

我有.tgzNPM 模块的文件。看起来可以使用 Yarn 1.x 完成,但似乎不适用于 Yarn 2。

我将文件放入lowdb-1.0.0.tgz项目文件夹的根目录中进行测试,并尝试了这些不起作用(项目配置为 Yarn 2):

yarn add lowdb-1.0.0.tgz

YN0027: lowdb-1.0.0.tgz@unknown can't be resolved to a satisfying range
YN0001: RequestError: getaddrinfo ENOTFOUND registry.yarnpkg.com
...
Run Code Online (Sandbox Code Playgroud)

yarn add ./lowdb-1.0.0.tgz

YN0000: Resolution step
YN0013: lowdb@file:./lowdb-1.0.0.tgz::locator=reaction%40workspace%3A. can't be found in the cache and will be fetched
YN0001: RequestError: getaddrinfo ENOTFOUND registry.yarnpkg.com
...
Run Code Online (Sandbox Code Playgroud)

yarn add file:./lowdb-1.0.0.tgz

Internal Error: Invalid descriptor (file:./lowdb-1.0.0.tgz)
...
Run Code Online (Sandbox Code Playgroud)

这可能与 Yarn 2 相关吗?或者是否有另一种方法可以使用 Yarn 2 使用下载的 asset/bundles/tgz 将模块直接安装到离线计算机上?

offline yarnpkg yarnpkg-v2

5
推荐指数
1
解决办法
1390
查看次数

Typescript 编译器无法找到带有纱线的节点 - 无法找到“节点”的类型定义文件

我安装了@types/node。我正在使用 Yarn 2 (PnP)。好像 Typescript 找不到 @types/node 包?

yarn build使用构建脚本运行webpack显示有关无法解析模块(路径、缓冲区等)的错误

跑步tsc节目TS2688: Cannot find type definition file for 'node'.

然而,运行“ts-node”确实可以正常工作。

我的 tsconfig.json 如下:

{
  "compilerOptions": {
    "outDir": "./dist",
    "rootDir": "./src",
    "module": "commonjs",
    "target": "es6",
    "jsx": "react",
    "allowJs": true,
    "moduleResolution": "node",
    "esModuleInterop": true,
    "lib": [
      "ES2020",
      "DOM"
    ],
    "types": ["node"]
  },
  "include": [
    "src/**/*"
  ]
}
Run Code Online (Sandbox Code Playgroud)

我的 webpack.config.js

module.exports = {
  mode: "development",
  devtool: "inline-source-map",
  entry: "./src/server.ts",
  output: {
    filename: "bundle.js"
  },
  resolve: {
    extensions: …
Run Code Online (Sandbox Code Playgroud)

typescript webpack yarnpkg yarnpkg-v2

5
推荐指数
1
解决办法
4323
查看次数

修补 npm 包时出现错误

当我修补这样的依赖项时:

\n

package.json

\n
  "dependencies": \n    "react-native-webview": "patch:react-native-webview@11.0.3#scripts/patches/react-native-webview+11.0.3.patch",\n    ...\n
Run Code Online (Sandbox Code Playgroud)\n

patches/react-native-webview+11.0.3.patch

\n
diff --git a/apple/RNCWebView.m b/apple/RNCWebView.m\nindex ff9ff9e0..dfea91a8 100644\n--- a/apple/RNCWebView.m\n+++ b/apple/RNCWebView.m\n@@ -194,12 +194,18 @@ - (void)dealloc\n...\n
Run Code Online (Sandbox Code Playgroud)\n

yarn当我使用或在本地安装东西时,一切正常yarn install。补丁已应用,并且没有错误。

\n

然而,当事情进入 CI 时,我收到如下错误:

\n
**ERROR** Failed to apply patch for package react-native-webview at path\n  \n    node_modules/react-native-webview\n\n  This error was caused because patch-package cannot apply the following patch file:\n\n    patches/react-native-webview+11.0.3.patch\n\n  Try removing node_modules and trying again. If that doesn\'t work, maybe there was\n  an accidental change made …
Run Code Online (Sandbox Code Playgroud)

patch yarnpkg-v2

5
推荐指数
1
解决办法
2万
查看次数

纱线零安装 - 缺少拔出目录中的软件包但无法提交本地拔出目录

切换到纱线零安装方法(请参阅https://yarnpkg.com/features/zero-installs),在运行 CI 管道时,我遇到了以下类型的错误:

/app/.pnp.cjs:47262
throw firstError;
      ^
 
Error: Required unplugged package missing from disk. This may happen when switching branches without running installs (unplugged packages must be fully materialized on disk to work).
 
Missing package: nodemon@npm:2.0.7
Expected package location: /app/.yarn/unplugged/nodemon-npm-2.0.7-7b95e46511/node_modules/nodemon/
.
.
.
Run Code Online (Sandbox Code Playgroud)

好的,这是预料之中的,因为这种方法不会运行yarn install,只是使用.yarn. 按照本段最后一点的建议https://yarnpkg.com/features/zero-installs#how-do-you-reach-this-zero-install-state-youre-advocating-for我调整了我的.gitignore.dockerignore文件包括这个:

.yarn/*
!.yarn/cache
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/sdks
!.yarn/versions
!.yarn/unplugged
Run Code Online (Sandbox Code Playgroud)

因此,拔出的文件夹应该能够提交到存储库,并在 CI 管道期间可用。但正如你所看到的,拔出的文件夹中每个包的文件仍然是灰色的,无法提交。

即使在检查了所有文件之后,输出git status --ignore仍然列出了目录:unplugged.gitignore

.yarn/.DS_Store
.yarn/build-state.yml
.yarn/cache/.gitignore
.yarn/install-state.gz …
Run Code Online (Sandbox Code Playgroud)

git yarnpkg yarnpkg-v2

5
推荐指数
1
解决办法
4813
查看次数

Yarn 3.1,Vite 2.9,找不到包 vite

当尝试使用 Vite 构建应用程序时,我看到一个错误。如果我理解正确的话,Yarn PnP 解决依赖关系似乎存在问题(不再有node_modules),而 Vite 似乎没有注意到这一点?怎样才能让Vite明白node_modules已经不存在了?

更新:此处复制的测试用例: https: //github.com/michaeljohansen/vite-test-case"type": "module" - 如果从 中删除,错误似乎会消失package.json,但这对我来说还没有任何意义,并给我的 Node 后端带来了其他问题。

$ yarn run vite --config vite.config.js
Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'vite' imported from /Users/me/project/vite.config.js
Did you mean to import vite-virtual-ec56a6c02a/0/cache/vite-npm-2.9.13-cda1bb45b9-a5e501b920.zip/node_modules/vite/dist/node/index.js?
    at new NodeError (node:internal/errors:377:5)
    at packageResolve (node:internal/modules/esm/resolve:910:9)
    ...
Run Code Online (Sandbox Code Playgroud)
$ yarn run vite --config vite.config.js
Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'vite' imported from /Users/me/project/vite.config.js
Did you mean to import vite-virtual-ec56a6c02a/0/cache/vite-npm-2.9.13-cda1bb45b9-a5e501b920.zip/node_modules/vite/dist/node/index.js?
    at new NodeError (node:internal/errors:377:5)
    at packageResolve …
Run Code Online (Sandbox Code Playgroud)

javascript node.js yarnpkg-v2 vite

5
推荐指数
1
解决办法
1万
查看次数

如何从 Yarn2 降级到 Yarn1?

我使用的是 macOS,安装 Yarn2 后,几个重要的工具不再起作用。我已经记录了他们的问题,但与此同时我需要回到 Yarn Classic。brew uninstall yarn然后尝试brew install yarn@1.22.5,但失败并显示未知版本错误消息。

yarnpkg yarnpkg-v2

4
推荐指数
1
解决办法
3225
查看次数

使用节点模块链接器时如何在现代纱线中仅安装生产依赖项

我使用的是现代 Yarn(确切地说是 v3.2.4),它与 Yarn Classic 不同。

我正在使用sonodeLinker: node-modules中的选项创建,并且依赖项不会保存到存储库中。.yarnrc.yml/node_modules

我只想安装生产依赖项(无 devDependency),但--productionYarn 3 不支持该标志。我该如何执行此操作?

production yarnpkg-v2

4
推荐指数
1
解决办法
2827
查看次数

如何将 Vite 与 Yarn 工作区结合使用?

在我的工作场所,我们试图让 Vite 与 Yarn Workspaces(在 Yarn v2 中)一起使用。

我们想要创建一个测试环境,在其中使用从同一存储库但不同工作区发布的包之一。为了显示:

packages
   package-a
   package-b
Run Code Online (Sandbox Code Playgroud)

package.json这些包主要是这样引用的:

packages
   package-a
   package-b
Run Code Online (Sandbox Code Playgroud)

where 是这样引用package-b的:package-apackage-bpackage.json

{
  ...
  "workspaces" : [
    "packages/package-a",
    "packages/package-b"
  ]
  ...
  "packageManager": "yarn@3.3.1"
}
Run Code Online (Sandbox Code Playgroud)

但我们发现,当在 Vite 中运行应用程序时,该包没有被加载到浏览器中。这导致了如下错误:

Uncaught SyntaxError: The requested module ... does not provide an export named ...
Run Code Online (Sandbox Code Playgroud)

仅在运行时,但 TypeScript 和 ESLint 对我们的导入非常满意。

请参阅下面我的回答以找出我们的解决方案。

yarn-workspaces yarnpkg-v2 vite

4
推荐指数
1
解决办法
4671
查看次数