首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >绝对路径在Vite项目中不起作用

绝对路径在Vite项目中不起作用
EN

Stack Overflow用户
提问于 2021-07-04 02:39:16
回答 5查看 24.2K关注 0票数 29

Vite react ts项目中,我很难找到绝对的工作路径。

下面是我创建这个项目的方式

代码语言:javascript
复制
npm init @vitejs/app
npx: installed 6 in 1.883s
√ Project name: ... test-vite
√ Select a framework: » react
√ Select a variant: » react-ts

然后我将baseUrl添加到基于TS官方医生tsconfig.json中。

代码语言:javascript
复制
{
  "compilerOptions": {
    "baseUrl": "./src",
    ...

然后添加一个简单的组件(T:\Test.tsx\src\components\Test.tsx)

代码语言:javascript
复制
import React from "react";

const Test = () => <h1>This is a Test.</h1>;

export default Test;

最后,我将测试组件导入到App.tsx中。

但它不允许我使用绝对路径:

代码语言:javascript
复制
import Test from "components/Test";

我知道这个错误

然而,如果使用相对路径,则应用程序在dev & build模式下工作,没有任何错误:

代码语言:javascript
复制
import Test from "./components/Test";

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

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2021-07-05 02:30:13

这里有两个问题:

  • 告诉类型记录如何解析导入路径
  • 告诉vite如何构建导入路径。

您只告诉类型记录如何解决,但vite不知道如何构建。因此,请参阅正式文档resolve.alias,也许这就是您想要的:

代码语言:javascript
复制
// vite.config.ts
{
  resolve: {
    alias: [
      { find: '@', replacement: path.resolve(__dirname, 'src') },
    ],
  },
  // ...
}

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

代码语言:javascript
复制
import Test from "@/components/Test";
import bar from "@/foo/bar"

此外,您可以直接使用vite插件resolve.alias vite-tsconfig-路径 ,它使您不必手动配置

票数 51
EN

Stack Overflow用户

发布于 2022-05-02 10:02:29

我通过搜索结果来到这里,我在寻找不同的东西,即如何做一个简单的绝对导入,比如import { foo } from 'src/lib/foo.ts'

因此,如果您有一个包含所有代码并希望使用绝对导入路径的/src目录。

vite.config.ts

代码语言:javascript
复制
export default defineConfig({
  ...
  resolve: {
    alias: {
      src: path.resolve('src/'),
    },
  }
})

tsconfig.json

代码语言:javascript
复制
{
  "compilerOptions": {
    ...
    "baseUrl": "./"
  }
}

注意,这是一个技巧: src是一个别名,因此在Vite中,路径看起来是绝对的。如果根dir中有另一个目录,与/src相邻,则需要为该目录添加另一个别名。

票数 10
EN

Stack Overflow用户

发布于 2022-04-13 14:17:54

@Yuns解决方案工作,但在vscode中显示错误。它破坏了vs代码中的自动导入。

为了使它在vscode和vite中都工作,我在tsconfig和vite.config中都添加了别名。

代码语言:javascript
复制
// tsconfig.json
{
  "paths": {
      "@/*": ["src/*"]
    }
  // ...
}


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

然后,我可以像下面这样导入(svelte应用程序在src目录中)

代码语言:javascript
复制
import Header from '@/components/Header.svelte
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68241263

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档