【发布时间】:2021-12-31 04:31:14
【问题描述】:
我正在使用 ViteJS 编译一个 TS 代码库。 Vite 编译代码没有问题,但它不处理 types,所以我尝试使用 Typescript 的 tsc 来执行此操作,并且每次引用 @ 都会出错987654323@.
我运行类型构建:
npx tsc src/index.ts \
--emitDeclarationOnly \
--module es2020 \
--target es2020 \
--outDir dist/types
注意:将
es2020更改为esnext也会以同样的方式失败
在我使用新的 ES 模块语法的所有地方都出现以下错误:
“ImportMeta”类型上不存在属性“env”
但在 vs-code 中,类型系统很满意,而且确实在运行时确实有效。现在 vs-code 很高兴的原因是我创建了一个 src/ImporMeta.d.ts 文件,它看起来像这样:
interface ImportMeta {
env: {
VITE_APP_TITLE?: string;
BASE_URL: string;
MODE: string;
PROD: boolean;
DEV: boolean;
VITE_DEBUG?: boolean;
[`VITE_${string}`]: string;
};
}
然而,出于某种原因,tsc 没有看到此文件或由于某些其他原因拒绝构建,即使“目标”和“模块”都处于 import.meta 应该是的级别允许。
谁能帮我解决我做错了什么?
我正在使用 Typescript 4.5.2 并在节点 16.13.0 下运行(也尝试了节点 14.18.1 但结果相同)
更新:令我惊讶的是,虽然我遇到了这些错误(其中三个),但它实际上仍然构建了类型,包括文件来源的文件......对于我的 CI/CD,我需要错误去离开所以问题还没有解决,但现在我很困惑为什么它会构建然后失败。
【问题讨论】: