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

纱线工作区monorepo与vite,反应,顺风-VS代码无法解决包

易书
2023-03-14

我用yarn@3工作区。

我的根package.json

{
  "name": "hello-yarn-workspaces",
  "packageManager": "yarn@3.1.1",
  "workspaces": [
    "apps/*",
    "packages/*"
  ],
  "devDependencies": {
    "@commitlint/cli": "^16.0.1",
    "@commitlint/config-conventional": "^16.0.0",
    "husky": "^7.0.4"
  },
  "scripts": {
    "postinstall": "husky install",
    "prepublishOnly": "pinst --disable",
    "postpublish": "pinst --enable"
  }
}

app/ui中的package.json

{
  "name": "ui",
  "packageManager": "yarn@3.1.1",
  "scripts": {
    "dev": "vite"
  },
  "dependencies": {
    "react": "^17.0.2",
    "react-dom": "^17.0.2"
  },
  "devDependencies": {
    "@tailwindcss/forms": "^0.4.0",
    "@types/react": "^17.0.38",
    "@types/react-dom": "^17.0.11",
    "@vitejs/plugin-react": "^1.1.3",
    "autoprefixer": "latest",
    "postcss": "latest",
    "tailwindcss": "latest",
    "typescript": "^4.5.4",
    "vite": "^2.7.10"
  }
}

我已经在我的app/ui/src文件夹中创建了一个组件,当我运行yarn workspace ui run dev时,该应用程序可以在浏览器中启动。

但是,在VS代码中打开我的monorepo时,它无法解析import语句中的npm包:

// Cannot find module 'react' or its corresponding type declarations.ts(2307)
import React, { ReactElement, useState } from 'react'

同样的情况发生在vite.config.ts中的app/ui

// Cannot find module 'vite' or its corresponding type declarations.ts(2307)
import { defineConfig } from 'vite'
// Cannot find module '@vitejs/plugin-react' or its corresponding type declarations.ts(2307)
import react from '@vitejs/plugin-react'

在WebStorm中打开monorepo时,一切正常。

可以在这里找到repo存储库。

更新:它似乎与PnP机制有关。我遇到了这个问题,并在中设置了nodeLinker:node modules。雅尔克。yml后接纱线安装修复了它。

然而,这个问题的答案对我不起作用。

在运行warn dlx@yarnpkg/sdks vscode后,我在VS代码中遇到了这个错误:

The path /Users/alexzeitler/src/hello-yarn-workspaces/.yarn/sdks/typescript/lib/tsserver.js doesn't point to a valid tsserver install. Falling back to bundled TypeScript version.

. yarn/sdks/typecript/lib中的文件实际上不存在,但我在. yarn/sdks中有一个文件integrations.yml

# This file is automatically generated by @yarnpkg/sdks.
# Manual changes might be lost!

integrations:
  - vscode

共有1个答案

那博瀚
2023-03-14

看起来丢失的部分是由于PnP配置造成的:

yarn add --dev typescript ts-node prettier
yarn dlx @yarnpkg/sdks vscode

添加一个最小的tsconfig.json

{
  "compilerOptions": {
    /* Basic Options */
    "target": "es5",
    "module": "commonjs",
    "lib": ["ESNext"],

    /* Strict Type-Checking Options */
    "strict": true,

    /* Module Resolution Options */
    "moduleResolution": "node",
    "esModuleInterop": true,

    /* Advanced Options */
    "forceConsistentCasingInFileNames": true,
    "skipLibCheck": true
  }
}

然后安装这个VS Code扩展,然后执行以下步骤:

  • 在打字脚本文件中按ctrl-shift-p键
  • 选择“选择打字脚本版本”
  • 选择“使用工作区版本”

更多细节可以在文档中找到。

 类似资料:
  • 我的问题是,我无法在VS代码中看到(因此也无法编辑)。gitignore文件,因为VS代码不允许您将单个文件添加到工作区(只允许文件夹)。相反,如果我试图将整个文件夹(包含func-a和func-b)添加到工作区,那么我会遇到无法为每个云函数设置不同解释器(virtualenvs),相反,VS代码似乎迫使我为整个工作区使用相同的Python解释器。 有没有更好的方法来做我正在努力做的事情?

  • 我试图添加顺风到vue项目,为了做到这一点,我遵循以下步骤: vue版本 创建项目 安装顺风 在以下位置创建css文件: 将以下内容复制到 将以下行添加到main中。js 执行 并显示以下消息 无法解析加载程序:sass加载程序您可能需要安装它。 安装sass加载器 并出现以下错误: 我解决了这个问题: 再次运行服务器,但是视图看起来没有顺风css。 有什么方法正确安装顺风与sass和vue4?

  • 我正面临一个问题,当提交一个火花作业罐子在纱。当我用-master yarn-client提交它时,它工作得很好,并给出了我预期的结果 命令如下所示; ./spark-submit--类main.mainclass--主纱--客户端--驱动程序--内存4G--执行器--内存4G--num-执行器4--执行器-核心2 job.jar其他--选项

  • 我在一个Python项目中工作,我想为该项目定义存储virtualenv的路径。 我在工作区设置中有linting设置,但是这是签入到我的git存储库中的,并且在项目中的任何协作者中都是常见的,因此我认为在工作区设置中引用我个人为该项目保留virtualenv的位置是没有意义的。 由于它是一个特定于项目的virtualenv,在我的用户设置中引用它也没有意义。 是否有一种方法可以为这个项目存储到v

  • 我想为一个开源的React组件做贡献,我想在我的webpack包中使用一个项目分支。 我正在使用纱线,我试图用纱线安装叉子 然而,当webpack试图编译我的bundle时,它会引发奇怪的错误 我错过什么了吗? 编辑:当我使用npm发布的包时,节点模块文件夹包含 当我使用fork时,项目似乎没有编译并包含 好像我错过了一步。。。我认为用github fork进行纱线添加会自动释放,但似乎我错了?