Node / Express / Nuxt应用未获取环境变量

时间:2019-05-30 10:09:59

标签: node.js express vue.js sendgrid nuxt.js

我正在尝试通过Vue / Nuxt应用程序设置SendGrid,但是我只能通过对API密钥进行硬编码来使其正常工作。当我尝试使用首选的环境变量方法时,出现未经授权的错误。这是因为应用程序未选择变量,而是返回了 Undefined

如何使应用获取变量?

我的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密钥测试了代码,因此密钥是正确的,只是环境变量未被使用。

我在做什么错了?

2 个答案:

答案 0 :(得分:1)

在package.json文件的依存关系部分中是否有行“ dotenv”:“ ^ 6.2.0”? 和主要js文件中的“ require('dotenv')。config()”? 必须使其正常运行

答案 1 :(得分:0)

好的,我已经解决了这个问题。

使用 @ nuxt / dotenv 似乎导致读取环境变量时出现问题。

我删除了 @ nuxt / dotenv ,只是通过npm安装了 dotenv ,然后将API密钥放在了.env文件中,并被选中。

留在这里以防其他有类似问题的人。