无法进入由汇总插件替换定义的对象

stu*_*-pj 6 javascript rollupjs svelte svelte-3

在 Svelte 组件中,我尝试访问我在汇总配置文件中设置的对象。我的rollup.config.js文件如下所示:

import replace from '@rollup/plugin-replace';

...
export default {
...
    replace({
        foo: JSON.stringify({ bar: 'Hello' }),
    }),

...
Run Code Online (Sandbox Code Playgroud)

在我的 Svelte 组件中,有一个简单的console.log(foo)工作原理:

富

但是当我尝试进入 foo 对象时console.log(foo.bar),我得到foo is not Defined

foo未定义

Shr*_*van 3

好问题!对象 foo 仍然未定义,因此它会抛出正确的错误,并且无法找到foo要替换的内容。

解决方案是让替换插件完成其工作。js您可以在您或您的.svelte文件中像这样访问您的变量


const { bar } = foo;

console.log(bar);

Run Code Online (Sandbox Code Playgroud)

注意:此插件已进行更改,请在此处查看详细信息。如果您计划使用 dotenv 来使用环境变量,请考虑

import { config } from "dotenv";

...
replace({
      values: {
        foo: JSON.stringify({ bar: "Hello", ...config().parsed }),
      },
    }),
...
Run Code Online (Sandbox Code Playgroud)

并在你的svelte文件中

  const { bar, ...rest } = foo;
  console.log("bar=>", bar);
  console.log("env=>", rest);
Run Code Online (Sandbox Code Playgroud)

  • 替换插件正在查找“foo”,如果是“foo.bar”则无法执行此操作。 (2认同)