【问题标题】:How to use dotenv in SvelteKit project?如何在 SvelteKit 项目中使用 dotenv?
【发布时间】:2021-08-30 00:08:28
【问题描述】:

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

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

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

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

svelte.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

【问题讨论】:

  • 这可能会有所帮助:docs
  • 我认为“您需要自己实例化 dotenv”意味着自己导入 dotenv。但我想现在唯一的方法就是给环境变量加上前缀?

标签: dotenv sveltekit


【解决方案1】:

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

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

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

这对我有用。

【讨论】:

    【解决方案2】:

    我通过在 svelte-kit devsvelte-kit previewnode build 的开头添加 env-cmd 解决了 env-cmd (https://www.npmjs.com/package/env-cmd) 的问题。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-11
      • 2022-11-12
      • 2017-06-30
      • 2018-11-15
      • 2020-11-10
      • 2022-10-23
      • 1970-01-01
      • 2021-12-15
      相关资源
      最近更新 更多