首页 > 解决方案 > 如何在本地使用/替换 Svelte 组件中的 env 变量

问题描述

我正在寻找.envSvelte 中文件周围缺失的部分。我仅将 env 文件用于本地开发,如下所示:

GRAPHQL_URL=http://localhost:8010/proxy/graphql

rollup.config.js我想将 env 变量替换为可以在 Svelte 组件中使用的字符串(使用@Rollup/plugin-replace):

export default [{
...
    plugins: [
    replace({
      preventAssignment: true,
      GRAPHQL_URL: process.env.GRAPHQL_URL
    })
...

有了这个,我希望将一个变量GRAPHQL_URL注入到包中并在一个苗条的文件中可用?像这样:

mycomponent.svelte

const url = GRAPHQL_URL;
console.log(url); // expect "http://localhost:8010/proxy/graphql"

但我得到:

Uncaught ReferenceError: process is not defined
    at instanceOf.mjs:11
    at web.js:160

我开发npm run dev包含rollup -c -w. 节点版本 16 和 NPM 版本 7。

我尝试了一些dotenv指南但没有成功。

标签: node.jsenvironment-variablessvelterollupjssvelte-3

解决方案


您需要对变量进行字符串化,而不是注入进程本身:

GRAPHQL_URL: JSON.stringify(process.env.GRAPHQL_URL)

推荐阅读