当前位置: 首页 > 知识库问答 >
问题:

如何配置VSCode以运行Thread 2(使用PnP)驱动的TypeScript

逑何平
2023-03-14

如何配置VSCode以运行Thread 2(使用PnP)驱动的TypeScript

我喜欢使用纱线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版本,我都这样做了。我还确保执行了一个重新加载窗口,但仍然出现以下错误:

tsconfig中。json:找不到“节点”的类型定义文件。

测试中。ts:找不到名称“进程”。是否需要为节点安装类型定义?尝试npm i——保存dev@types/node,然后将node添加到tsconfig中的types字段。

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

在我的设置中,我遗漏了哪些步骤来让Thread 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添加到。雅尔克。yml和当I重新加载窗口VSCode不再报告错误时,它会正确返回NodeJS。当我在我的测试中悬停时,处理。ts。这至少表明大多数设置应该是正确的,并且是唯一一个给VSCode带来麻烦的PnP。


共有3个答案

张智
2023-03-14

这里是部分答案,因为这个页面是搜索yarn 2 vscode时的顶级结果。

TL;DR——据我目前的理解,让Thread 2在VSCode中工作的唯一方法是在一个文件夹工作区内。

在上下文中,我将yarn2设置为一个monorepo,并使用带有TypeScript的Create React应用程序——我到处都能看到红色的曲线,就像OP描述的那样,但在命令行中,一切都很好。

根据此处的纱线2说明:

将TypeScript添加到项目根目录:

yarn add -D typescript

运行SDK命令:

yarn dlx @yarnpkg/sdks vscode

这将添加SDK文件到. yarn/sdks,以及创建一个. vscode文件夹,其中包含以下setttings.json

{
  "search.exclude": {
    "**/.yarn": true,
    "**/.pnp.*": true
  },
  "typescript.tsdk": ".yarn/sdks/typescript/lib",
  "typescript.enablePromptUseWorkspaceTsdk": true
}

这里是我们试图指向VSCode要使用的TypeScript SDK的地方。

但是,如果您一直在多文件夹VS代码工作区中执行此操作(在这里您可以右键单击-

This setting cannot be applied in this workspace. It will be applied when you open the containing workspace folder directly.

有关消息的讨论,请参阅Github问题。

我找到的解决方案是:

VScode-

我的Github问题概述了这个问题/解决方案。

焦光霁
2023-03-14

虽然我已经接受了另一个答案,但我认为,如果我详细说明我最终是如何做到这一点的,这可能会对人们有所帮助。

>

  1. npm安装-g纱线
  2. cd~/path/to/project
  3. 纱线集版本最新(或纱线集版本berry,但我用的是最新

或者,如果你和我一样,在中使用nodeLinker:node modules。雅尔克。yml目前,您必须删除该行并运行纱线安装以使其返回纱线2的默认即插即用设置。x及以上。

至少需要在根项目中安装需要修补以使用即插即用的开发依赖项。我的根程序包的简化版本。json如下所示:

{
  "name": "root",
  "private": true,
  "devDependencies": {
    "prettier": "^2.4.1",
    "ts-node": "^10.2.1",
    "typescript": "^4.4.3"
  },
  "workspaces": [
    "packages/*"
  ],
  "packageManager": "yarn@3.0.2"
}
{
  "search.exclude": {
    "**/.yarn": true,
    "**/.pnp.*": true
  },
  "prettier.prettierPath": ".yarn/sdks/prettier/index.js",
  "typescript.tsdk": ".yarn/sdks/typescript/lib",
  "typescript.enablePromptUseWorkspaceTsdk": true
}
{
  "folders": [
    {
      "path": "."
    }
  ],
  "settings": {
    "search.exclude": {
      "**/.yarn": true,
      "**/.pnp.*": true
    },
    "prettier.prettierPath": ".yarn/sdks/prettier/index.js",
    "typescript.tsdk": ".yarn/sdks/typescript/lib",
    "typescript.enablePromptUseWorkspaceTsdk": true
  }
}
麹权
2023-03-14

我昨晚在迁移到Thread v2并使用PnP时遇到了这个问题。

  1. 确保运行yarn dlx@yarnpkg/sdks vscode后,在. yarn目录中创建了以下文件夹结构:. yarn/sdks/typecript/lib
  2. 更改VSCode工作区配置以添加以下内容:
    "typescript.tsdk":". yarn/sdks/typecript/lib"

在monorepo中使用Thread工作区时,我还遇到了第1步的另一个问题,我要做的是安装typescriptprettiereslint作为根包的依赖项(它通常没有任何依赖项)。在第二步,我将路径改为frontend/。纱线/SDK/typescript/lib

 类似资料:
  • 在Spring工具套件(eclipse的定制版本)中,有一个选项可以为同一个应用程序定义多个运行配置,然后运行它们。 例如,当测试一台Eureka服务器并运行具有不同端口和名称定义的同一应用程序的多个实例以检查注册时。 有人知道使用Spring和Java扩展以及Visual Studio代码定义类似运行配置的方法吗?

  • 问题内容: 有没有人对Python / SQLAlchemy应用进行性能分析?找到瓶颈和设计缺陷的最佳方法是什么? 我们有一个Python应用程序,其中数据库层由SQLAlchemy处理。该应用程序使用批处理设计,因此许多数据库请求是在有限的时间内顺序执行的。当前运行时间太长,因此需要一些优化。我们不使用ORM功能,数据库是PostgreSQL。 问题答案: 有时,仅是普通的SQL日志记录(通过p

  • 我有以下目录结构: 我将Vue用于客户端代码和dbaeumer。vscode eslintvscode的扩展。在<代码>。vue文件我在import语句中不断出错。 无法解析模块的路径 我一直在使用设置来设置它,但没有成功。在我的客户端本地eslint配置中,我定义了导入/解析器:

  • 问题内容: 有没有人对Python / SQLAlchemy应用进行性能分析?找到瓶颈和设计缺陷的最佳方法是什么? 我们有一个Python应用程序,其中数据库层由SQLAlchemy处理。该应用程序使用批处理设计,因此很多数据库请求是在有限的时间内顺序执行的。当前运行时间太长,因此需要一些优化。我们不使用ORM功能,数据库是PostgreSQL。 问题答案: 有时,仅是普通的SQL日志记录(通过p

  • 问题内容: 我想开始为我的Python代码编写单元测试,而py.test框架听起来比Python捆绑的unittest更好。因此,我在项目中添加了“ tests”目录,并在其中添加了test_sample.py。现在,我想配置PyCharm以运行“ tests”目录中的所有测试。 据称,PyCharm在其测试运行程序中支持py.test。您应该能够创建运行/调试配置来运行测试,并且PyCharm据

  • Mac os对我来说是新的。我最近在MAC OS上安装了MAMP。我已将我的php项目放入 应用程序/MAMP/htdocs 当我执行这个代码我得到的URL作为 因为网址说它使用8888端口,我不想在我的网址8888,因为我的项目有各种重定向。所以我尝试改变MAMP上的端口------ 优势-----imade它设置默认的apace和MySql端口 但是在ist之后,当我重新启动MAMP时,我找到