Node.js环境变量ES6

bnl4lu3b  于 2023-02-08  发布在  Node.js
关注(0)|答案(3)|浏览(168)

我正在读取ES6中的环境变量。

import dotenv from "dotenv";
dotenv.config()

但是,当我尝试使用

process.env.example

就像我经常在commonJS中做的那样,我收到一条错误消息,指出进程未定义。有人能帮助我吗?

hwamh0ep

hwamh0ep1#

在他们的文件里写着

import * as dotenv from 'dotenv' 
dotenv.config()

这里有一个解释;您可以在此处阅读更多信息=〉www.example.comhttps://github.com/motdotla/dotenv#how-do-i-use-dotenv-with-import
当运行包含导入声明的模块时,首先加载它导入的模块,然后以深度优先遍历依赖关系图的方式执行每个模块主体,从而通过跳过已执行的任何内容来避免循环。

    • 用通俗的语言来说,这意味着什么?它意味着你认为下面的方法可行,但实际上行不通。**
// errorReporter.mjs
import { Client } from 'best-error-reporting-service'

export default new Client(process.env.API_KEY)

// index.mjs
import dotenv from 'dotenv'
dotenv.config()

import errorReporter from './errorReporter.mjs'
errorReporter.report(new Error('documented example'))

进程环境API_KEY将为空。
相反,上面的代码应编写为..

// errorReporter.mjs
import { Client } from 'best-error-reporting-service'

export default new Client(process.env.API_KEY)

// index.mjs
import * as dotenv from 'dotenv'
dotenv.config()

import errorReporter from './errorReporter.mjs'
errorReporter.report(new Error('documented example'))
f0ofjuux

f0ofjuux2#

Uncaught ReferenceError: process is not defined是您在浏览器控制台中运行process.env.example时得到的消息。您只能在服务器端访问此环境变量,而不能在客户端访问。

6tdlim6h

6tdlim6h3#

也许吧

import * as dotenv from 'dotenv'

如库文档所示,以防您使用ES6而不是旧的require()方法。
另请参阅:https://www.npmjs.com/package/dotenv

相关问题