gpt4 book ai didi

reactjs - React Monorepo yarn 工作区 + typescript + 绝对导入

转载 作者:行者123 更新时间:2023-12-03 14:57:09 24 4
gpt4 key购买 nike

我在使用 yarn 工作区和 typescript 设置 React 项目时遇到问题。
我的文件夹结构是:

-root
-package.json
-workspaces
-web
-common

和我的 package.json文件是:
{
"name": "my-project-name",
"private": true,
"workspaces": [
"workspaces/web",
"workspaces/common"
],
"moduleFileExtensions": [
"ts",
"tsx",
"js",
"jsx",
"json",
"node"
]
}

我的问题是:当我在 web 上导入文件时来自 common项目,如果它是 .js,它工作正常文件,但失败并显示 TypeError: Object(...) is not a function使用 .ts 时或 .tsx文件。

关于我可能遗漏的任何想法?

最佳答案

我建议采用以下文件层次结构:

- root
- package.json
- tsconfig.json
- packages
- common
- package.json
- tsconfig.json
- services
- web
- package.json
- tsconfig.json
packages 中的所有内容可以导入文件夹。服务是您不想在其他项目中导入的“叶”项目。
以此为基础,你的根 package.json 应该这样设置:
{
"name": "my-project-name",
"private": true,
"workspaces": [
"packages": [
"packages/*",
"services/**/*"
],
],
}
然后,您还需要告诉 typescript 如何解析导入。
在根 tsconfig.json 中,设置以下内容:
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@myproject/*": ["packages/*/src"]
},
}
确保每个 tsconfig 都使用 "extends": "../../tsconfig.json" 扩展此基础。
内部 web/package.json或任何需要导入 common 的包,将 common 定义为依赖项:
{
[...]
"dependencies": {
"@myproject/common": "*",
}
}
现在,如果您的 common package.json 的名称设置为 `"@myproject/common",您可以在 web 中导入您的代码:
import { myUtilFunction } from "@myproject/common";
我建议你也使用这样的设置来学习。
您还需要修改一些构建管道,因为您要在/web 文件夹中导入/web 文件夹之外的文件。有关更完整的示例,您可以查看此 repo: https://github.com/NiGhTTraX/ts-monorepo

关于reactjs - React Monorepo yarn 工作区 + typescript + 绝对导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50513612/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com