Node.js 如何在gatsby服务(节点)运行时发出console.log命令

Node.js 如何在gatsby服务(节点)运行时发出console.log命令,node.js,gatsby,Node.js,Gatsby,我和盖茨比(静态站点生成器)一起玩。 我创建了一个.env文件并安装了所需的dotenv包 在配置文件中,我输入了以下代码: require("dotenv").config({path:`.env.${process.env.NODE_ENV}`,}) 在前端加载gatsby develop时,如何使用console.log在控制台中测试env变量 我使用visual studio代码和PowerShell命令行在windows系统上工作。虽然我在windows的环境变量

我和盖茨比(静态站点生成器)一起玩。 我创建了一个
.env
文件并安装了所需的
dotenv

在配置文件中,我输入了以下代码:

require("dotenv").config({path:`.env.${process.env.NODE_ENV}`,})
在前端加载
gatsby develop
时,如何使用
console.log
在控制台中测试
env
变量

我使用visual studio代码和PowerShell命令行在windows系统上工作。虽然我在windows的环境变量中设置了
ENV_节点
参数

直接在配置文件或前端文件(如
index.js
)中使用
console.log
命令。但这很奇怪,因为没有
GATSBY
(如文档中所述)的变量在前端工作。
为什么?

要在浏览器中直接访问环境变量,您应该在它们前面加上
GATSBY\uu
,如下所述:

在节点中,您的站点可以使用 标识符
process.env.API\u KEY
。要在客户端访问它,您可以使用 一个
.env.*
文件,包含
API\u密钥
。但是,我们强烈建议您 反对将这些文件签入源代码管理,因为这是一种安全措施 问题以公开API密钥。作为更安全的替代方案,您可以 在变量前面加上
GATSBY
(如上所示)。有了这个前缀, 盖茨比自动将变量作为
process.env.Gatsby\\
*嵌入到 编译的JS使其在浏览器上下文中可用,无需 把它暴露在别处

编译时运行的文件(
gatsby config.js
等)中放置的
console.logs()
中的未固定变量不会显示在浏览器的控制台中,因为这些
console.logs
在服务器(本地计算机)中运行。如果在此处放置
console.log
,它将在终端(VSCode终端、Powershell终端等)中可见,但在浏览器中不可见。它们是服务器端变量

由于
NODE_ENV
是一个保留的环境变量,因此不能为它们添加前缀,因此无法在浏览器控制台中显示。扩展,:

由于使用了某些环境变量,因此不能重写某些环境变量 在构建期间进行内部优化,例如:

  • NODE\u ENV
  • PUBLIC\u DIR
总之,要在客户端测试变量(例如
index.js
),您需要在变量前面加上
GATSBY\uu
,并在控制台中打印它们(如果需要)。它可能在
develope
模式下工作,但如果不在
build
模式下工作,则可能会导致严重问题。服务器端的输出将是终端,而不是浏览器的控制台

在服务器端编译期间执行的文件(
gatsby config.js
等)也将在终端而不是浏览器控制台中输出。与客户端变量相反,客户端变量将在浏览器控制台中输出。这是谁呈现变量、服务器还是客户端的问题