我尝试在我的Heroku NodeJS应用程序中设置SendGrid加载项。我创建了API密钥并将其设置为环境变量。
整个API密钥类似于:SG.实际值.bbb_cccccc
第一个设置我做了我设置整个键作为我的SENDGRID_API_KEY,我得到了这个错误:
API密钥不是以SG开头。
因此,我意识到了这个错误,取消了环境变量的设置,并再次将其设置为整个键的actualValue部分。
然而,我仍然得到同样的错误。我尝试再次做同样的事情或重新启动终端(实际上,整个笔记本电脑)。
这是我尝试从SendGrid设置页面运行的测试代码:
const sgMail = require('@sendgrid/mail');
sgMail.setApiKey(process.env.SENDGRID_API_KEY)
const msg = {
to: 'test@example.com',
from: 'test@example.com',
subject: 'Sending with Twilio SendGrid is Fun',
text: 'and easy to do anywhere, even with Node.js',
html: '<strong>and easy to do anywhere, even with Node.js</strong>',
};
sgMail.send(msg);
我试着创建一个新的键并设置它,但我得到了同样的错误。我试着将它设置为整个键,但没有“.SG”或只是bbb_ccccc部分。提前感谢。
9条答案
按热度按时间w1jd8yoj1#
API密钥不是以SG开头。
表示SendGrid的API键应该以
SG.
开头。因此,您没有正确设置环境变量。您需要检查它。只需使用console.log
打印环境变量。或者,使用以启动应用的控制台,并使用
printenv
打印环境变量。TIMES: 5
环境变量是通过heroku配置变量设置的:例如:
第一个
果然收到了邮件:
laawzig22#
你好如果你使用的是node js,请确保在需要sendgrid/nodemailer模块的文件中有require('dotenv').config()。如果没有它,sendgrid传输器将有一个未定义的值而不是api_key。
zz2j4svz3#
我使用的是SendGrids v3和dotenv v8.2,在Node.js SendGrid上设置了一个env文件
SendGrid.env
,里面有导出SENDGRID_API_KEY
,我将文件重命名为.env
,删除了导出,现在它可以工作了。在我的sendEmail文件的顶部看起来像这样:
我的
.env
文件看起来像这样:xfb7svmp4#
我把
.env
中的单引号改成了双引号。这样就修复了我的bug。下面是我的sendgrid.env
文件的样子:ckx4rj1h5#
你需要在你的测试文件的开头加上
require('dotenv').config();
,否则它将无法找到你的密钥。mqkwyuun6#
我有一个同样的问题,我删除了
export
关键字从.env
文件,它为我工作d8tt03nd7#
我在开发环境中运行我的代码时遇到了这个问题。我也在使用env-cmd包。我通过更改package.json文件来修复这个问题:
更改为:
ssm49v7z8#
我在NestJS中也遇到了同样的问题,问题是我在NestJS中非常新,LOL。
configureService使用变量的名称来获取值,我认为应该传递变量而不是名称
jqjz2hbq9#
如果每次对环境变量(
dev.env
)进行设置时没有重新启动服务器,则可能会出现此问题。例如,如果你把你的键从sendgrid或任何值在环境变量(
dev.env
),你应该重新启动服务器,在我的情况下,我也面临同样的问题,然后我把process.env.SENDGRID_API_KEY
在console.log
和发现未定义的终端,所以在我的情况下,下一步做的是键入^c
在终端,然后敲回车:现在在终端中可以看到显示在终端中的密钥,希望位解决您的问题