2

我正在尝试在 SvelteKit 项目中使用 dotenv.config() 。

我可以npm run build成功运行。但是当我尝试启动服务器(使用node build)时,它会抛出Error: Dynamic require of "fs" is not supported.

我试图注释掉 dotenv 部分src/routes/test.js并再次构建,这次服务器启动时没有任何错误。(我在npm init svelte@next没有打字稿的情况下创建了项目,除了这里的代码,其他没有任何改变)

我应该如何在这里使用 dotenv 在运行时加载环境变量?

苗条的.config.js

import node from '@sveltejs/adapter-node';

const config = {
    kit: {
        adapter: node(),
        target: '#svelte'
    }
};

export default config;

/src/routes/test.js

import dotenv from 'dotenv';

dotenv.config();

export function get() {
    return {
        body: {
            test: process.env.TEST
        }
    }
}

.env

TEST=123
4

2 回答 2

6

无需显式加载 dotenv。Vite 使用 dotenv https://vitejs.dev/guide/env-and-mode.html#env-files

您可以通过 import.meta.env.VITE_MY_VAR 访问您的变量

重要的是,您的环境变量必须以 VITE_ 为前缀才能使它们暴露。如果您已经在运行 npm run dev,请退出并重新开始。

这对我有用。

于 2021-07-14T17:07:45.243 回答
4

我通过添加,和. env-cmd _svelte-kit devsvelte-kit previewnode build

此外,使用process.env['TEST']而不是process.env.TEST因为 process.env.TEST 被 vite 替换为 ({})。( https://github.com/vitejs/vite/issues/3176 )

于 2021-06-15T00:46:57.033 回答