我有Vite + React + TypeScript应用程序与 struct

src
  constants
    a.ts
    b.ts
    index.ts
  components
    Comp.tsx

tsconfig"baseUrl": "src"

a.ts个内容:

export const ARRAY = [1, 2, 3];

b.ts个内容:

export const Object = { foo: 'bar' };

index.ts内容:

export * from './a';
export * from './b';

Comp.tsx内容:

import { ARRAY } from 'constants';

应用程序运行正常,但在WebStorm中出现错误,单位为Comp.tsx:

TS2305: Module  "constants"  has no exported member  ARRAY 

为什么?我该怎么补救?

我想摆脱这个错误.

推荐答案

constants本身是 node 类型LIB (Usually reside in this path: 101)的保留字.因此,如果您没有在项目配置中明确定义指向constants目录的正确路径,则可能会发生冲突.

如何修复它?

有两种方法可以解决此问题:

  1. 解决此问题的最好、最简单的方法是避免在项目中使用constants作为直接目录.您可以将其移动到utils目录(It mostly depends on your project design and architecture)下,也可以将其重命名为其他自定义名称,如constslocalConstants等.

  2. compilerOptions设置内明确定义项目constants目录的确切路径.在您的例子中,您可以在tsconfig.*中定义它(可以在jsconfig.*中配置基于JS的项目).

    根据documentation,你可以这样做:

    {
      "compilerOptions": {
        "paths": {
           "constants": ["./src/constants"]
        }
      }
    }
    

Typescript相关问答推荐

在TypScript手册中可以视为接口类型是什么意思?

如何使打包和拆包功能通用?

VS代码1.88.0中未出现自动导入建议

如何防止TypeScript允许重新分配NTFS?

如何通过TypeScript中的工厂函数将区分的联合映射到具体的类型(如类)?

更新为Angular 17后的可选链运算符&?&问题

隐式键入脚本键映射使用

向NextAuth会话添加除名称、图像和ID之外的更多详细信息

在排版修饰器中推断方法响应类型

如何通过TypeScrip中的函数防止映射类型中未能通过复杂推理的any值

通过泛型函数本身推断受约束的泛型参数的类型脚本问题

为什么我的动画状态在组件实例之间共享?

有没有办法在Zod中使用跨字段验证来判断其他字段,然后呈现条件

避免混淆两种不同的ID类型

具有匹配功能的TS通用事件处理程序

仅当类型为联合类型时映射属性类型

导航链接不触发自定义挂钩

两个接口的TypeScript并集,其中一个是可选的

使用受保护的路由和入门来响应路由

如何为对象创建类型,其中键是只读且动态的,但值是固定类型?