我想使用之前的答案和笑话文档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 的情况下,有哪些解决方法可用?
与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
这是在应用程序的父级中提供的。
我正在尝试使用 Yarn 2 将模块安装到离线计算机上。
我有.tgz
NPM 模块的文件。看起来可以使用 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 将模块直接安装到离线计算机上?
我安装了@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) 当我修补这样的依赖项时:
\npackage.json
:
"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)\npatches/react-native-webview+11.0.3.patch
:
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)\nyarn
当我使用或在本地安装东西时,一切正常yarn install
。补丁已应用,并且没有错误。
然而,当事情进入 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) 切换到纱线零安装方法(请参阅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) 当尝试使用 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) 我使用的是 macOS,安装 Yarn2 后,几个重要的工具不再起作用。我已经记录了他们的问题,但与此同时我需要回到 Yarn Classic。brew uninstall yarn
然后尝试brew install yarn@1.22.5
,但失败并显示未知版本错误消息。
我使用的是现代 Yarn(确切地说是 v3.2.4),它与 Yarn Classic 不同。
我正在使用sonodeLinker: node-modules
中的选项创建,并且依赖项不会保存到存储库中。.yarnrc.yml
/node_modules
我只想安装生产依赖项(无 devDependency),但--production
Yarn 3 不支持该标志。我该如何执行此操作?
在我的工作场所,我们试图让 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-a
package-b
package.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 对我们的导入非常满意。
请参阅下面我的回答以找出我们的解决方案。
yarnpkg-v2 ×10
yarnpkg ×5
vite ×2
git ×1
javascript ×1
jestjs ×1
node.js ×1
offline ×1
patch ×1
production ×1
typescript ×1
webpack ×1
yarn-v2 ×1