【问题标题】:sveltekit api process.env.VARIABLE_NAME undefinedsveltekit api process.env.VARIABLE_NAME 未定义
【发布时间】:2021-12-20 09:11:56
【问题描述】:

我不确定这是否是竞争条件,但我无法访问特定的环境变量

我在 svelte 中有一个 API 端点设置

import dotenv from 'dotenv';
dotenv.config();
console.log(process.env)
console.log(process.env.NODE)

结果是

{
  NVM_INC: '/Users/simon/.nvm/versions/node/v16.13.1/include/node',
  TERM_PROGRAM: 'vscode',
  NODE: '/Users/simon/.nvm/versions/node/v16.13.1/bin/node',
  INIT_CWD: '/Users/simon/development/svelte/sveltekit-oidc',
  NVM_CD_FLAGS: '-q',
  TERM: 'xterm-256color',
  ...
}
undefined

在进一步测试以下工作正常

console.log(process.env['NODE'])
/Users/simon/.nvm/versions/node/v16.13.1/bin/node

不知道为什么会这样,我担心如果这是一个竞争条件,它可能会在开发中起作用,并且在某些时候会给我在生产中的错误。

【问题讨论】:

    标签: node.js svelte sveltekit


    【解决方案1】:

    对于 sveltekit,您需要为 .env 文件中的变量添加前缀,例如 VITE_MYSECRET=123,并使用 import.meta.env.VITE_MYSECRET 使用/导入它们。

    参考文档https://kit.svelte.dev/faq#env-varshttps://vitejs.dev/guide/env-and-mode.html#env-files

    对于 Svelte,您需要 rollup-replace 插件来获取环境变量,下面的 sn-p 在另一个 question 上得到了回答。

    import { config } from "dotenv";
    ...
    replace({
          values: {
            foo: JSON.stringify({ bar: "Hello", ...config().parsed }),
          },
        })
    ...
    

    在您的.svelte 文件中

      const { bar, ...rest } = foo;
      console.log("bar=>", bar);
      console.log("env=>", rest);
    

    【讨论】:

      猜你喜欢
      • 2017-12-08
      • 1970-01-01
      • 2021-11-17
      • 2022-10-22
      • 2022-09-26
      • 2021-07-02
      • 2022-07-22
      • 2022-09-23
      • 2023-01-16
      相关资源
      最近更新 更多