Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在部署到Vercel的Next.js应用程序中正确设置环境变量?

如何在部署到Vercel的Next.js应用程序中正确设置环境变量?
EN

Stack Overflow用户
提问于 2021-02-20 08:23:03
回答 1查看 4.9K关注 0票数 3

我正在用Next.js构建我的网络应用程序,我一直在做一些测试。我正在做的是将我的代码推送到GitHub,然后将项目部署到Vercel。

我正在使用Google依赖项,这需要一些客户端ID和客户端秘密,以便我能够使用节点邮件从我的客户端发送电子邮件到收件箱(我正在通过联系人表单这样做)。

然而,在本地主机上一切正常,但是当我部署到Vercel上时,我无法让我的联系人表单发送邮件(这与环境变量有关)。

我尝试了选项A和B

选项A

创建一个.env.local,在那里添加我的变量,然后在next.config.js中访问它们,如下面的代码所示(控制台日志显示,我可以在我的应用程序的任何地方访问这些变量)

.env.local

代码语言:javascript
运行
AI代码解释
复制
env:{
    CLIENT_URL:'vxcxsfddfdgd',
    MAILING_SERVICE_CLIENT_ID:'1245785165455ghdgfhasbddahhhhhhhhm',
    MAILING_SERVICE_CLIENT_SECRET:'Rdfvcnsf4263543624362536',
    MAILING_SERVICE_REFRESH_TOKEN:'000000',
    USER_EMAIL_ADDRESS:'yesyesyesyesyesyes@gmail.com',        
}

next.config.js

代码语言:javascript
运行
AI代码解释
复制
module.exports = {
  env:{
    CLIENT_URL: process.env.CLIENT_URL,
    MAILING_SERVICE_CLIENT_ID: process.env.MAILING_SERVICE_CLIENT_ID,
    MAILING_SERVICE_CLIENT_SECRET: process.env.MAILING_SERVICE_CLIENT_SECRET,
    MAILING_SERVICE_REFRESH_TOKEN: process.env.MAILING_SERVICE_REFRESH_TOKEN,
    USER_EMAIL_ADDRESS: process.env.USER_EMAIL_ADDRESS,  
  }
}

如果我喜欢上面的选项A,那么发送电子邮件在本地主机上不起作用,在Vercel上也不起作用。

选项B

我将变量放入next.config.js中,如下所示,将next.config.js添加到.gitignore,然后推送到GitHub。

代码语言:javascript
运行
AI代码解释
复制
module.exports = {
  env:{
    CLIENT_URL:'http://localhost:3000',
    MAILING_SERVICE_CLIENT_ID:'7777777777777777777777',
    MAILING_SERVICE_CLIENT_SECRET:'R123456789',
    MAILING_SERVICE_REFRESH_TOKEN:'1123456789',
    USER_EMAIL_ADDRESS:'seiseibaba@gmail.com',
    
  }
}

选项B在本地主机上工作,但是如果我在Vercel 如图所示上添加了环境变量,那么发送邮件就不能工作。

我怎样才能让这件事对我有效呢?

EN

回答 1

Stack Overflow用户

发布于 2021-02-20 08:58:23

简单地使用环境变量创建.env.local (或.env)文件就足以让服务器上的Next.js选择。没有必要向您的next.config.js添加任何内容。

代码语言:javascript
运行
AI代码解释
复制
# .env.local

CLIENT_URL=vxcxsfddfdgd
MAILING_SERVICE_CLIENT_ID=1245785165455ghdgfhasbddahhhhhhhhm
MAILING_SERVICE_CLIENT_SECRET=Rdfvcnsf4263543624362536
MAILING_SERVICE_REFRESH_TOKEN=000000
USER_EMAIL_ADDRESS=yesyesyesyesyesyes@gmail.com

但是,如果需要向浏览器公开一个变量,则必须在变量前面加上NEXT_PUBLIC_

代码语言:javascript
运行
AI代码解释
复制
NEXT_PUBLIC_CLIENT_URL=vxcxsfddfdgd

这将在浏览器上使用:

代码语言:javascript
运行
AI代码解释
复制
process.env.NEXT_PUBLIC_CLIENT_URL

有关Next.js中的环境变量的详细信息,请参阅https://nextjs.org/docs/basic-features/environment-variables

同样的原则也适用于您在Vercel (或任何其他托管服务)中创建的环境变量,添加前缀将使浏览器可以使用它们。

您可以通过Environment Variables页面在Vercel中添加环境变量,该页面与.env.local中的变量相匹配。

有关Vercel中的环境变量的详细信息,请参阅https://vercel.com/docs/concepts/projects/environment-variables

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66293848

复制
相关文章
A simple augmented reality application
在 OpenGL 中主要使用 4x4 矩阵来表示转换,这个和 3x4 的相机矩阵不同。然而,OpenGL 中的 GL_PROJECTION 和 GL_MODELVIEW 是将相机矩阵分开来表示。其中 GL_PROJECTION 表示相机的内参数 K 矩阵;GL_MODELVIEW 表示物体和相机之间的转换关系,可以粗略地表示为 R 和 t 矩阵。
caoqi95
2019/10/18
8890
Qt Model/View教程——只读Table
一直想学习Qt Model/View,最终还是看的官方教程,现在将官方教程重新在梳理下。
用户5908113
2020/02/12
2.1K0
OpenGL的glPushMatrix()和glPopMatrix()矩阵栈顶操作函数详解「建议收藏」
OpenGL中图形绘制后,往往需要一系列的变换来达到用户的目的,而这种变换实现的原理是又通过矩阵进行操作的。opengl中的变换一般包括视图变换、模型变换、投影变换等,在每次变换后,opengl将会呈现一种新的状态(这也就是我们为什么会成其为状态机)。
全栈程序员站长
2022/07/23
1.5K0
OpenGL的glPushMatrix()和glPopMatrix()矩阵栈顶操作函数详解「建议收藏」
【OpenGL】十、OpenGL 绘制点 ( 初始化 OpenGL 矩阵 | 设置投影矩阵 | 设置模型视图矩阵 | 绘制点 | 清除缓冲区 | 设置当前颜色值 | 设置点大小 | 绘制点 )
上一篇博客 【OpenGL】九、OpenGL 绘制基础 ( OpenGL 状态机概念 | OpenGL 矩阵概念 ) 简单介绍 OpenGL 中的一些理论概念 ; 本篇博客开始使用 OpenGL 绘制 点 ;
韩曙亮
2023/03/28
2.1K0
【OpenGL】十、OpenGL 绘制点  ( 初始化 OpenGL 矩阵 | 设置投影矩阵 | 设置模型视图矩阵 | 绘制点 | 清除缓冲区 | 设置当前颜色值 | 设置点大小 | 绘制点 )
glPushMatrix和glPopMatrix的作用
终于明白为什么使用glPushMatrix()和glPopMatrix()的原因了。将本次需要执行的缩放、平移等操作放在glPushMatrix和glPopMatrix之间。glPushMatrix()和glPopMatrix()的配对使用可以消除上一次的变换对本次变换的影响。使本次变换是以世界坐标系的原点为参考点进行。下面对上述结论做进一步的解释:
全栈程序员站长
2022/07/22
5040
实验4 二维几何变换
根据示范代码1,使用OpenGL平移、旋转、缩放变换函数来改写代码实现所要求的功能。示范代码1的代码运行结果为图1。
步行者08
2019/02/25
1.1K0
【OpenGL】九、OpenGL 绘制基础 ( OpenGL 状态机概念 | OpenGL 矩阵概念 )
上一篇博客 【OpenGL】八、初始化 OpenGL 渲染环境 ( 导入 OpenGL 头文件 | 链接 OpenGL 库 | 将窗口设置为 OpenGL 窗口 | 设置像素格式描述符 | 渲染绘制 ) ★ 进行了 OpenGL 渲染环境初始化 ;
韩曙亮
2023/03/28
4.2K0
Android 代码混淆 混淆方案
本篇文章:自己在混淆的时候整理出比较全面的混淆方法,比较实用,自己走过的坑,淌出来的路。请大家不要再走回头路,可能只要我们代码加混淆,一点不对就会导致项目运行崩溃等后果,有许多人发现没有打包运行好好地,打包完成以后而又不不可以了,导致了许多困惑,本片文章来问大家解决困惑,希望对大家有帮助。
全栈程序员站长
2022/09/02
2.8K0
Qt ModelView教程(二)——应用举例(一)
因为是为一个Table设置Model,为了快速入门,我们选择继承QAbstractTableModel。继承后需要重写三个函数,分别是Model的行数和列数、以及每个Cell需要显示的内容。
用户5908113
2020/02/12
6940
js混淆与反混淆
由于设计原因,前端的js代码是可以在浏览器访问到的,那么因为需要让代码不被分析和复制从而导致更多安全问题,所以我们要对js代码进行混淆。
ek1ng
2023/03/08
11.9K0
js混淆与反混淆
实验5 OpenGL二维几何变换
(1)阅读实验原理,掌握OpenGL程序平移、旋转、缩放变换的方法。 (2)根据示范代码,完成实验作业。
步行者08
2020/10/27
2.5K2
实验5 OpenGL二维几何变换
001计算机图形学vs2015配置openGL及第一个opengl程序
OpenGL中的gl库是核心库,glu是实用库,glut是实用工具库; gl是核心,glu是对gl的部分封装,glut是OpenGL的跨平台工具库,gl中包含了最基本的3D函数,而glu似乎对gl的辅助,如果算数好,不用glu的情况下,也是可以做出同样的效果。glut是基本的窗口界面,是独立于gl和glu的,如果不喜欢用glut可以用MFC和Win32窗口等代替,但是glut是跨平台的,这就保证了我们编出的程序是跨平台的,如果用MFC或者Win32只能在windows操作系统上使用。选择OpenGL的一个很大原因就是因为它的跨平台性,所以我们可以尽量的使用glut库。
上善若水.夏
2018/09/28
1.4K0
Android开发笔记(一百五十四)OpenGL的画笔工具GL10
上一篇文章介绍了OpenGL绘制三维图形的流程,其实没有传说中的那么玄乎,只要放平常心把它当作一个普通控件就好了,接下来继续介绍OpenGL具体的绘图操作,这项工作得靠三维图形的画笔GL10来完成了。 GL10作为三维空间的画笔,它所描绘的三维物体却要显示在二维平面上,显而易见这不是一个简单的伙计。为了理顺物体从三维空间到二维平面的变换关系,有必要搞清楚OpenGL关于三维空间的几个基本概念。下面就概括介绍一下GL10编码的三类常见方法:
aqi00
2019/01/18
1.3K0
实验3 OpenGL几何变换
(1)阅读实验原理,运行示范实验代码,掌握OpenGL程序平移、旋转、缩放变换的方法;
步行者08
2018/10/09
1.3K0
Qt创建一个OpenGL窗口
点击上方蓝字可直接关注!方便下次阅读。如果对你有帮助,可以点个在看,让它可以帮助到更多同志~
用户5908113
2019/12/19
2.4K0
实验5 OpenGL模型视图变换
2、移动或者旋转它,当然了,如果它只是计算机里面的物体,我们还可以放大或缩小它(物体运动,让人看它的不同部分)。(模型变换)
步行者08
2018/10/09
1.7K0
OpenGL透明与混色效果
一、理论讲解 在OpenGL中,物体透明技术通常被叫做混合(Blending)。 透明是物体(或物体的一部分)非纯色而是混合色,这种颜色来自于不同浓度的自身颜色和它后面的物体颜色。 一个有色玻璃窗就是一种透明物体,玻璃有自身的颜色,但是最终的颜色包含了所有玻璃后面的颜色。这也正是混合这名称的出处,因为我们将多种(来自于不同物体)颜色混合为一个颜色,透明使得我们可以看穿物体。 透明物体可以是完全透明(它使颜色完全穿透)或者半透明的(它使颜色穿透的同时也显示自身颜色)。一个物体的透明度,被定义为它的颜色的alp
Zoctopus
2018/06/04
1.8K0
【专业技术】Android平台下使用OpenGL
存在问题: 安卓平台下如何使用opengl? 解决方案: 1、GLSurfaceView GLSurfaceView是Android应用程序中实现OpenGl画图的重要组成部分。GLSurfaceView中封装了一个Surface。而android平台下关于图像的现实,差不多都是由Surface来实现的 2、Renderer 有了GLSurfaceView之后,就相当于我们有了画图的纸。现在我们所需要做的就是如何在这张纸上画图。所以我们需要一支笔。 Renderer是GLSurfaceView的内部静态接口
程序员互动联盟
2018/03/15
1.3K0
【专业技术】Android平台下使用OpenGL
Qt ModelView教程——设置表头与可编辑Table
点击上方蓝字可直接关注!方便下次阅读。如果对你有帮助,可以点个在看,让它可以帮助到更多老铁~
用户5908113
2020/02/17
3.9K1
Qt ModelView教程——设置表头与可编辑Table
OpenGL ES 2.0 (iOS)[04]:坐标空间 与 OpenGL ES 2 3D空间
第一次变换 模型变换(Model Transforms):就是指从模型空间转换到世界空间的过程
半纸渊
2018/09/04
1.8K0
OpenGL ES 2.0 (iOS)[04]:坐标空间 与 OpenGL ES 2 3D空间

相似问题

Visual C++编译器优化

20

不能由While循环完成的递归示例

410

Visual c++无限while循环

17

这是由C#编译器完成的优化吗?

25

可以在C++代码而不是C代码上“轻松”完成的编译器优化示例

30
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档