我正在努力获得绝对路径工作在一个维特React-ts项目。
下面是我创建该项目的过程
npm init @vitejs/app
npx: installed 6 in 1.883s
√ Project name: ... test-vite
√ Select a framework: » react
√ Select a variant: » react-ts
然后我根据TS官方文档在tsconfig.json中添加了baseUrl:
{
"compilerOptions": {
"baseUrl": "./src",
...
然后添加一个简单的组件(T:\test-vite\src\components\Test.tsx)
import React from "react";
const Test = () => <h1>This is a Test.</h1>;
export default Test;
最后,我在App.tsx中导入Test组件
但它不允许我使用绝对路径
import Test from "components/Test";
我得到这个错误x1c 0d1x
而如果我使用相对路径,应用程序将在dev&build模式下运行,不会出现任何错误:
import Test from "./components/Test";
如何在项目中使用绝对路径?
6条答案
按热度按时间ax6ht2ek1#
这里有两个问题:
你只告诉typescript如何解析,但vite不知道如何构建.所以参考官方文档resolve. alias,也许这就是你想要的:
您可以像这样导入路径(或
./src
下的任何模块):vite-tsconfig-paths
,这样您就不必手动配置resolve.alias
**请遵循以下说明:
1.将
vite-tsconfig-paths
安装为开发依赖项1.使用vite. config. ts模块注入
vite-tsconfig-paths
rks48beu2#
我是通过搜索结果来到这里的,我在寻找一些不同的东西,即如何执行简单的绝对导入,如
import { foo } from 'src/lib/foo.ts'
因此,如果您有一个包含所有代码的/src目录,并且希望使用绝对导入路径。
vite.config.ts
tsconfig.json
请注意,这是一个技巧:src是一个别名,所以在Vite中路径看起来是绝对的。如果在根目录中有另一个目录,与/src相邻,则需要为该目录添加另一个别名。
mlmc2os53#
@Yuns解决方案可以工作,但在vscode中显示错误。并且在vs代码中破坏了自动导入。
为了使它在vscode和vite中都能工作,我在tsconfig和vite. config中都添加了别名。
然后,我可以像下面这样导入(苗条的应用程序在
src
目录)ht4b089n4#
寻找
import {...} from "src/foo/bar";
?我也是通过用户Maciej Krawczyk的搜索结果来到这里的,但
@
部分也不是我感兴趣的。该用户的回答帮助了我,但我在path.resolve
部分遇到了麻烦(ReferenceError,因为path
没有定义),所以我使用了一种稍微不同的方法:vite.config.ts
Vite的解析器将绝对路径
/src
视为服务器提供服务的位置(请参阅GH issue),因此,如果您从项目的根目录运行/building,并将src
作为顶层目录(这很常见),则此别名将为Vite指明正确的方向。tsconfig.json
这基本上是盲目地跟随this StackOverflow answer。TypeScript需要知道我们也有特殊的解析正在进行,否则TS会被你不存在的
src
包吓坏,不知道应该去哪里找。(注意:在我更改了TS配置后,VSCode没有立即接受更改,所以我仍然收到警告。我退出,重新打开,不得不等待约15秒的警告消失。xfb7svmp5#
对于那些特别想在最新版本的Vite + React + TypeScript中添加像Vue一样的
import "@/something-in-src"
语法的人来说,我是这样做的:Make sure
@types/node
is installed as a dev dependency。这不是最新版本的Vite附带的,它会使"path"
和__dirname
抛出一个未定义的错误。维生素配置ts
系统配置json
增加:
bjp0bcyl6#
对于那些在所有必要的修改后仍然卡住的人,你需要重新加载vscode。我的配置文件:
在上面的代码中,您需要安装2个库:
配置好你的项目文件后,你需要重新加载vscode。要做到这一点,请按ctrl + P并键入**"〉reload with extensions disabled",之后你会看到弹出窗口来激活扩展,再次单击它,你的绝对路径就可以工作了
如果有人安装了vite-tsconfig-paths库,您还需要重新加载vscode,请记住将给定库导入到vite. config. ts**
对于包,您将获得默认的"components/File"导入,而不是"@components/File "导入。