【问题标题】:Absolute path not working in Vite project React TS绝对路径在 Vite 项目 React TS 中不起作用
【发布时间】:2021-09-15 08:34:09
【问题描述】:

我正在努力寻找在 Vite 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

然后我将 baseUrl 添加到 tsconfig.json 基于TS official doc:

{
  "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;

最后我将 Test 组件导入到 App.tsx
但它不会让我使用绝对路径:

import Test from "components/Test";

我收到此错误

而如果我使用相对路径,该应用程序可以在 devbuild 模式下运行而不会出现任何错误:

import Test from "./components/Test";

如何使绝对路径在项目中起作用?

【问题讨论】:

    标签: reactjs typescript vite


    【解决方案1】:

    这里有两个问题:

    • 告诉 typescript 如何解析导入路径
    • 告诉vite如何构建导入路径

    你只告诉 typescript 如何解决,但 vite 不知道如何构建。所以参考官方文档resolve.alias,也许这就是你想要的:

    // vite.config.ts
    {
      resolve: {
        alias: [
          { find: '@', replacement: path.resolve(__dirname, 'src') },
        ],
      },
      // ...
    }
    

    您可以像这样导入路径(或./src下的任何模块):

    import Test from "@/components/Test";
    import bar from "@/foo/bar"
    

    而且你可以直接使用vite插件vite-tsconfig-paths,这样你就不用手动配置resolve.alias

    【讨论】:

    • 谢谢@theprimone。该插件无疑是使其工作的一种简单方法。我最终得到了这个简单的 vite.config.ts ``` import { defineConfig } from "vite";从“@vitejs/plugin-react-refresh”导入 reactRefresh;从“vite-tsconfig-paths”导入 tsconfigPaths; // vitejs.dev/config export default defineConfig({ plugins: [reactRefresh(), tsconfigPaths()], }); ``` 这意味着我可以简单地使用没有@前缀的相对路径引用组件。 import Test from "components/Test";
    猜你喜欢
    • 2022-12-05
    • 2021-05-25
    • 2022-06-20
    • 2021-05-11
    • 2022-01-07
    • 2013-07-06
    • 1970-01-01
    • 2015-08-29
    • 1970-01-01
    相关资源
    最近更新 更多