描述问题
由于技术原因,我需要将一些环境变量传递给在 preview.tsx
装饰器中配置的提供者。但是,如果我添加一个 console.log(process.env)
,会出现一个空对象。同样的情况也发生在我在任何故事中 console.log
它里面。在 main.ts
文件中,通过 config
控制台输出给我正确的变量。我做错了什么?
重现步骤
- 添加一个
.env
文件,其中包含两个变量,一个带有STORYBOOK_
前缀,另一个没有。 - 将
preview.ts
重命名为preview.tsx
并导入React
。 - 我添加了以下装饰器:
decorators: [
(Story) => {
console.log(process.env); // returns { }
return (
);
},
],
- 在
main.ts
中,我添加了:
env: (config) => {
console.log(config); // returns { TEST:"test", STORYBOOK_TEST: "storybook test" }
return { ...config };
},
- 在
Button.stories.ts
中,我添加了一个返回{ }
的console.log(process.env)
(已在 Stackblitz 和本地复现中测试)。
系统信息
无响应
2条答案
按热度按时间xpcnnkqh1#
看起来这可能是
@storybook/nextjs
处理环境变量时的错误。vnjpjtjt2#
问题在#15925中得到了很好的解释。问题在于Webpack中的内部
DefinePlugin
仅用其对应的值替换process.env.<KEY>
,而没有修改process.env
。这是为了安全原因,其次,我们会尝试减少输出的膨胀。你现在可以尝试做的是稍微调整一下你的代码,使得const
environmentVariables
能够单独列出所有的键:理论上,这样应该就可以正常工作了。请告诉我这个解决方法是否有效。