我正在尝试用我的Vue/Nuxt应用程序来设置SendGrid,但是我只能通过硬编码API键来使它工作。当我尝试使用首选的环境变量方法时,我会得到一个未经授权的错误。这是因为应用程序没有选择变量,而是返回未定义的变量。
如何使应用程序获得变量?
我的API键保存在项目根中名为sendgrid.env的字段中。
然后,我在Nuxt项目中运行了一个Node/Express应用程序,代码如下:
const express = require('express')
const app = express()
app.get('/', (req, res, next) => {
res.send('API root')
})
app.get('/sendmail', (req, res, next) => {
// using Twilio SendGrid's v3 Node.js Library
// https://github.com/sendgrid/sendgrid-nodejs
const sgMail = require('@sendgrid/mail');
sgMail.setApiKey(process.env.SENDGRID_API_KEY);
const msg = {
to: 'somebody@something.net',
from: 'no-reply@somewhereelse.com',
subject: 'Test SendGrid',
text: 'This is a test of the SendGrid app on Node',
html: '<strong>This is a test of the SendGrid app on Node</strong>',
};
sgMail.send(msg);
res.send('SendMail API');
})
// export the server middleware
module.exports = {
path: '/api',
handler: app
}我已经用Curl测试了代码,也通过硬编码API键来测试代码,所以键是正确的,只是环境变量没有被拾取。
我做错了什么?
发布于 2019-05-30 10:38:41
在您的"dotenv": "^6.2.0"文件的依赖项部分有package.json吗?
require('dotenv').config();在你的主JS文件中?
这些线路是需要的,以使它工作。
发布于 2019-05-30 10:39:39
好的,我已经解决了这个问题。
使用@nuxt/dotenv似乎会导致读取环境变量的问题。
我删除了@nuxt/dotenv,并通过npm安装了dotenv,然后将API键放在.env文件中,然后将其取起。
离开这里以防对其他有类似问题的人有帮助。
https://stackoverflow.com/questions/56376118
复制相似问题