我现在使用的框架(vite)可以将环境变量注入import.meta.env
。
我以前能够创建一个文件env.d.ts
来为process.env
提供类型
declare global {
namespace NodeJS {
interface ProcessEnv {
GITHUB_AUTH_TOKEN: string;
NODE_ENV: 'development' | 'production';
PORT?: string;
PWD: string;
}
}
}
我已经尝试了以下方法,但不起作用。
declare global {
namespace NodeJS {
interface ImportMeta {
GITHUB_AUTH_TOKEN: string;
NODE_ENV: 'development' | 'production';
PORT?: string;
PWD: string;
}
}
}
8条答案
按热度按时间5t7ly7z51#
我也遇到过类似的问题,并通过以下方法解决了它
tsconfig.json
将
vite
作为开发依赖项安装。hmtdttj42#
它记录在这里:https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-9.html#support-for-importmeta
你就快到了
但是要注意,在vite中,所有环境变量都必须以
VITE_
为前缀,因此这些环境变量在应用程序中都不可用。weylhg0b3#
我用了以下方法让它工作起来-
ua4mk5z44#
根据www.example.com上的文档https://vitejs.dev/guide/env-and-mode.html#intellisense您可以执行以下操作:
cygmwpex5#
以上答案中链接到的此文档的URL已更新。
此外,
env.d.ts
应该放在src/
目录中,并且您需要在文件顶部有一个引用字符串。下面是一个完整的工作示例:
使用
VITE_
以外的变量前缀如果你不想使用默认的变量前缀,你可以在你的Vite配置中修改它:
qyuhtwio6#
如果您使用的是SvelteKitv1.0.0-next.120和Vite 2.4.0,则env必须是global.d.ts中ImportMeta的属性。
fnatzsnv7#
我发现,如果你需要import另一个类型,vite文档中的例子就不起作用了。
假设
VITE_CUSTOM_ENV_VARIABLE
的类型为MyCustomType
。P.S.我还建议删除
/// <reference types="vite/client" />
行,因为否则VITE_CUSTOM_ENV_VARIABLE
类型将为MyCustomType
或any
;2admgd598#
我发现的最简洁的方法基本上是扩展它们的类并分别添加我们的键:
在本例中,
VITE_API_SERVER_HOST
和VITE_API_SERVER_PORT
现在已正确记录。您还可以保留默认的Vite变量(如
BASE_URL
)以及其他meta.*
提示(如import.meta.glob()