目前在我的电子项目中,我有一个文件。env在它我有:
SHOPIFY_STORE=example.com
SHOPIFY_API_KEY=<key>
SHOPIFY_API_SECRET=<secret key>
在我的项目中,我尝试使用process.env访问这些文件。
console.log(process.env.SHOPIFY_STORE)
这将记录为未定义。当我
console.log(process.env)
我明白
NODE_ENV
:
"development"
PUBLIC_URL
:
""
WDS_SOCKET_HOST
:
undefined
WDS_SOCKET_PATH
:
undefined
WDS_SOCKET_PORT
:
undefined
看来我的env被忽略了。我需要设置什么才能让它可用吗?
1条答案
按热度按时间vc9ivgsu1#
方法一:
在创建浏览器窗口示例的主文件中,需要**“path”和“dotenv”**(也初始化dotenv),触发ipcMain事件处理主进程和渲染进程之间的进程间通信(IPC)。
最后,在
webPreferences
中添加一个名为preload option的属性,如下所示:您可以在app文件夹中创建preload.js文件,在preload.js中粘贴代码块下面。
preload.js脚本公开渲染器需要的模块。
因此,您不必在渲染器js文件中要求ipcRenderer(或任何其他节点模块),您可以直接使用它,它现在应该可以工作了
现在你可以在你的js文件或任何组件中使用
console.log(process.env.SHOPIFY_STORE)
,如果你使用的是React/Next.js我想告诉你一件事:
在preload.js中
dotenv config对象将返回一个对象,其中包含另一个名为“parsed”的对象。
在“解析”对象中,您将获得.env文件中定义的所有ENV
请不要被上面的解释搞糊涂了,所有的环境仍然可以通过调用
process.env.YOUR_ENV_NAME
获得方法二:
只需要在你的主文件中初始化dotenv模块,比如你创建浏览器窗口的地方
注:方法2仅在Nextron上进行了测试
Nextron =〉Electron.js + Next.js更多信息Nextron
方法三:
A portable ENV access method