由于 import.meta 的错误错误,tsc 不会生成声明文件
tsc won't produce declaration files due to false error with import.meta
我正在使用 ViteJS 编译 TS 代码库。 Vite 转译代码没有问题,但它不处理 types 所以我尝试使用 Typescript 的 tsc 来做到这一点并获得每次引用 import.meta.env
.
时都会出错
我 运行 构建类型:
npx tsc src/index.ts \
--emitDeclarationOnly \
--module es2020 \
--target es2020 \
--outDir dist/types
Note: changing es2020
to esnext
also fails in the same way
我在使用新的 ES 模块语法的所有地方都出现了以下错误:
Property 'env' does not exist on type 'ImportMeta'
但是在 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
应该被允许。
任何人都可以帮助我解决我做错的事情吗?
我在节点 16.13.0 下使用 Typescript 4.5.2 和 运行ning(也试过节点 14.18.1 但结果相同)
更新:令我惊讶的是,虽然我遇到了这些错误(其中三个),但它实际上仍然构建了类型,包括文件来源的文件......对于我的 CI/CD 我需要错误消失了,所以问题没有得到解决,但现在我很困惑为什么它会构建然后失败。
您不需要为此自定义 .d.ts,只需在 tsconfig.json 中使用以下内容:
{
"compilerOptions": {
"types": ["vite/client"]
}
}
这是相应的文档页面:https://vitejs.dev/guide/features.html#client-types
请注意,.d.ts 文件可能不会被 tsc 拾取,因为您为 tsc 命令指定了入口点。
我正在使用 ViteJS 编译 TS 代码库。 Vite 转译代码没有问题,但它不处理 types 所以我尝试使用 Typescript 的 tsc 来做到这一点并获得每次引用 import.meta.env
.
我 运行 构建类型:
npx tsc src/index.ts \
--emitDeclarationOnly \
--module es2020 \
--target es2020 \
--outDir dist/types
Note: changing
es2020
toesnext
also fails in the same way
我在使用新的 ES 模块语法的所有地方都出现了以下错误:
Property 'env' does not exist on type 'ImportMeta'
但是在 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
应该被允许。
任何人都可以帮助我解决我做错的事情吗?
我在节点 16.13.0 下使用 Typescript 4.5.2 和 运行ning(也试过节点 14.18.1 但结果相同)
更新:令我惊讶的是,虽然我遇到了这些错误(其中三个),但它实际上仍然构建了类型,包括文件来源的文件......对于我的 CI/CD 我需要错误消失了,所以问题没有得到解决,但现在我很困惑为什么它会构建然后失败。
您不需要为此自定义 .d.ts,只需在 tsconfig.json 中使用以下内容:
{
"compilerOptions": {
"types": ["vite/client"]
}
}
这是相应的文档页面:https://vitejs.dev/guide/features.html#client-types
请注意,.d.ts 文件可能不会被 tsc 拾取,因为您为 tsc 命令指定了入口点。