【发布时间】:2021-03-27 09:37:15
【问题描述】:
如何配置 VSCode 以运行由 Yarn 2(使用 PnP)驱动的 TypeScript
我喜欢使用 Yarn 2(带有 PnP),几个月前我设置了一个项目,它运行良好。现在我尝试设置一个新项目,但无论我尝试什么,我都无法让 VSCode 正确解析模块。旧项目仍然有效,我的测试用例在其中正常工作,所以它一定是新项目,而不是问题所在的 VSCode。
我的新项目设置如下:
mkdir my-project
cd my-project
npm install -g npm
npm install -g yarn
yarn set version berry
yarn init
yarn add --dev @types/node typescript ts-node prettier
yarn dlx @yarnpkg/pnpify --sdk vscode
cat <<'EOF' > tsconfig.json
{
"compilerOptions": {
"types": [
"node"
]
}
}
EOF
mkdir src
cat <<'EOF' > src/test.ts
process.once("SIGINT", () => process.exit(0));
EOF
我确实在 StackExchange 和其他地方检查了类似的问题,但它们归结为运行 pnpify 并在 VSCode 中选择 TypeScript 版本作为其工作台 -pnpify 版本,我都这样做了。我还确保执行Reload Window,但我仍然收到以下错误:
在tsconfig.json:找不到“节点”的类型定义文件。
在test.ts 中:找不到名称“进程”。您需要为节点安装类型定义吗?尝试npm i --save-dev @types/node,然后将node 添加到 tsconfig 中的 types 字段。
重要的是要注意,我可以运行test.ts 没有任何问题,例如:yarn ts-node src/test.ts。因此问题似乎仅限于 VSCode 的工作台配置(VSCode 仍然可以为我的旧项目解析模块)。
我在设置中缺少哪些步骤以使 Yarn 2(带有 PnP)驱动的 TypeScript 在 VSCode 中正常工作?
关于VSCode的信息:
Version: 1.51.1
Commit: e5a624b788d92b8d34d1392e4c4d9789406efe8f
Date: 2020-11-10T23:31:29.624Z
Electron: 9.3.3
Chrome: 83.0.4103.122
Node.js: 12.14.1
V8: 8.3.110.13-electron.0
OS: Linux x64 5.7.19
在 VSCode 中报告的 TypeScript 版本:4.1.3-pnpify。
> cd my-project
> yarn --version
2.4.0
更新:我尝试将nodeLinker: node-modules 添加到.yarnrc.yml 并且当我Reload Window VSCode 不再报告错误并且当我将process 悬停在我的test.ts 中时它正确返回NodeJS.Process。这至少表明大部分设置应该是正确的,并且它唯一给 VSCode 带来麻烦的 PnP。
【问题讨论】:
-
我有一个类似的问题,也许是一样的,在将我的 monorepo 传递给 PnP 之后,在内部包中 TS 没有找到根开发依赖项,并且请求
@types/node,这是以前不需要的。我发现这个线程 github.com/yarnpkg/berry/issues/1058 暗示纱线 2 PnP 变得更具限制性,如果它可以帮助你,我想在你的情况下你必须将@types/node添加到开发依赖项。从那时起,如果您找到了合适的解决方案,请不要犹豫分享!
标签: typescript visual-studio-code vscode-settings yarn-v2