纱线:找不到模块

Eli*_*ias 15 typescript yarnpkg yarn-workspaces

我有一个纱线工作区,其中设置了文件夹publicserver. 我在 VS Code 中使用 TypeScript。在任何没有随包预安装类型的模块上,我在 VS Code 中收到错误:

Cannot find module 'x'
Run Code Online (Sandbox Code Playgroud)

但是,IntelliSense 将显示x为建议。我两个都有x@types/x如果我安装的话似乎没有什么区别@types/x。谢谢

Windows 1909 (Latest)
Visual Studio Code 1.43 (Latest)
TypeScript ^3.8.3 (Latest)
Yarn 2.0.0-rc.30 (Latest)
Run Code Online (Sandbox Code Playgroud)

另外,我试图找到纱线的类型根,但没有。有人可以告诉我类型根目录在哪里吗?

B12*_*ter 14

查看此处的说明:https ://yarnpkg.com/getting-started/editor-sdks

智能 IDE(例如 VSCode 或 IntelliJ)需要特殊配置才能使 TypeScript 工作。此页面旨在收集与我们合作过的每个编辑器的设置 - 请为此列表做出贡献!

例如,当使用“vscode”IDE 时执行:

yarn dlx @yarnpkg/pnpify --sdk vscode
Run Code Online (Sandbox Code Playgroud)

上面的命令将连接你的 vscode 项目以依赖于yarn,即它sdks在你的.yarn配置中添加该文件夹,并告诉你的IDE使用它,通过将以下内容添加到你的settings.json

"typescript.tsdk": ".yarn/sdks/typescript/lib",
"typescript.enablePromptUseWorkspaceTsdk": true
Run Code Online (Sandbox Code Playgroud)

提示:Yarn 以 zip 存档的形式缓存其包。因此,为了也能够检查node_modules由纱线管理的导入,您可以安装ZipFS 扩展

此扩展添加了对 VSCode 的支持,以直接从 zip 存档中读取文件。它作为 Yarn 工具链的一部分进行维护。将此扩展与 Yarn SDK 结合使用将允许您从缓存中无缝打开和编辑文件。

  • 对于纱线 3,命令是 `yarn dlx @yarnpkg/sdks vscode` 。此外 .vscode 文件夹必须位于 VSCode 工作区根目录中(如有必要,请移动它并修复其中的路径)。 (2认同)

dan*_*son 13

来自文档

为了支持诸如转到定义之类的功能,需要像 ZipFS 这样的插件。

  1. 运行以下命令,这将生成一个名为 的新目录.yarn/sdks

    yarn dlx @yarnpkg/sdks vscode
    
    Run Code Online (Sandbox Code Playgroud)
  2. 出于安全原因,VSCode 要求您显式激活自定义 TS 设置:

  3. 在 TypeScript 文件中按 ctrl+shift+p

  4. 选择“选择 TypeScript 版本”

  5. 选择“使用工作区版本”

  • 我首先尝试了接受的答案(使用纱线 3 设置了一个全新的项目),但步骤 4 和 5 解决了我的问题。谢谢你! (4认同)

Pri*_*nah 9

类似的问题在这里。这个错误来自linter;我认为它正在检查包锁定文件的内部(当使用yarn时该文件不存在yarn.lock)。

请在您的 VSCode 用户中检查这些settings.json

"eslint.packageManager": "yarn",
"prettier.packageManager": "yarn",
"npm.packageManager": "yarn"
Run Code Online (Sandbox Code Playgroud)

这些设置对我有用。YMMV。

编辑:更改标点符号