如何将VSCode配置为运行Yarn 2(带PnP)驱动的打字机 [英] How to configure VSCode to run Yarn 2 (with PnP) powered TypeScript

查看:11
本文介绍了如何将VSCode配置为运行Yarn 2(带PnP)驱动的打字机的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何配置VSCode以运行Yarn 2(带有PnP)驱动的打字脚本

我喜欢使用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中的打字脚本版本作为其工作台-pnpify版本,我两者都这样做了。我还确保执行了Reload Window,但仍然收到以下错误:

tsconfig.json中:找不到‘node’的类型定义文件。

test.ts中:找不到名称‘Process’。是否需要为节点安装类型定义?尝试npm i --save-dev @types/node,然后将node添加到tsconfig的类型字段中。

需要注意的是,我可以运行test.ts而不会出现任何问题,例如:yarn ts-node src/test.ts。因此,问题似乎仅限于VSCode的工作台配置(VSCode仍然可以为我的旧项目解析模块)。

要使Yarn 2(带有PnP)驱动的打字稿在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中报告的打字脚本版本:4.1.3-pnpify

> cd my-project
> yarn --version
2.4.0
更新:我尝试将nodeLinker: node-modules添加到.yarnrc.yml,当我Reload WindowVSCode不再报告错误,并且当我在test.ts中悬停process时,它正确地返回NodeJS.Process。这至少表明大多数设置应该是正确的,并且它是唯一给VSCode制造麻烦的PnP。

推荐答案

我昨晚在迁移到Yarn v2并使用PnP时遇到了此问题。

  1. 确保在运行yarn dlx @yarnpkg/sdks vscode后,在.yarn目录中创建了以下文件夹结构:.yarn/sdks/typescript/lib
  2. 更改您的VSCode工作区配置以添加以下内容:
    "typescript.tsdk": ".yarn/sdks/typescript/lib"
在Monorepo中使用Yarn工作区时,我在步骤1中也遇到了另一个问题,我必须做的是将typescriptprettiereslint安装为根包的DevDependors(它通常没有任何依赖项)。在步骤2中,我将路径更改为frontend/.yarn/sdks/typescript/lib

这篇关于如何将VSCode配置为运行Yarn 2(带PnP)驱动的打字机的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆