1. ホーム
  2. javascript

[解決済み] API Keyが "SG "で始まっていない。センドグリッド

2022-02-08 08:15:54

質問内容

Heroku NodeJSアプリでSendGridアドオンをセットアップしようとしています。 API Keyを作成し、環境変数として設定しました。

APIキー全体は以下のような感じです。SG.actualValue.bbb_cccccc

最初のセットアップでは、SENDGRID_API_KEYとしてキー全体を設定しましたが、このエラーが発生しました。

APIキーがSGで始まっていません。

そこで、間違いに気づき、環境変数の設定を解除し、キー全体のactualValueの部分のみに設定し直しました。

しかし、まだ同じエラーが出ます。もう一度同じことをしたり、端末(実際にはラップトップ全体)を再起動したりしてみました。

これは、SendGridの設定ページから実行しようとしているテストコードです。

const sgMail = require('@sendgrid/mail');
sgMail.setApiKey(process.env.SENDGRID_API_KEY)
const msg = {
  to: '[email protected]',
  from: '[email protected]',
  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_ccccの部分だけにしてみたりしました。 よろしくお願いします。

解決方法を教えてください。

<ブロッククオート

APIキーがSGで始まらない。

は、SendGridのAPIキーを意味します。 すべき で始まる SG. つまり、環境変数が正しく設定されていないのですね。確認する必要があります。ただ console.log 環境変数を表示します。または、次のように使用します。

$ heroku run bash -a mighty-river-12802

を使ってアプリのコンソールを起動し printenv で環境変数を表示します。

Running bash on ⬢ mighty-river-12802... up, run.1571 (Free)
~ $ printenv
TERM=xterm-256color
WEB_MEMORY=512
MEMORY_AVAILABLE=512
COLUMNS=367
DYNO=run.1571
PATH=/app/.heroku/node/bin:/app/.heroku/yarn/bin:/usr/local/bin:/usr/bin:/bin:/app/bin:/app/node_modules/.bin
WEB_CONCURRENCY=1
_=/usr/bin/printenv
PWD=/app
PS1=\[\033[01;34m\]\w\[\033[00m\] \[\033[01;32m\]$ \[\033[00m\]
NODE_ENV=production
LINES=49
TIMES=5
HOME=/app
SHLVL=2
PORT=6791
NODE_HOME=/app/.heroku/node

TIMES: 5 環境変数は、heroku config vars で設定します。

const sgMail = require('@sendgrid/mail');

sgMail.setApiKey(process.env.SENDGRID_API_KEY);
const msg = {
  to: '[email protected]',
  from: '[email protected]',
  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)
  .then(() => console.log('send mail success'))
  .catch(console.log);

$ export SENDGRID_API_KEY=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
$ node index.js
send mail success

予想通りメールを受信しました。