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
等)也将在终端而不是浏览器控制台中输出。与客户端变量相反,客户端变量将在浏览器控制台中输出。这是谁呈现变量、服务器还是客户端的问题