使用 Mailjet 的 Nodejs 应用抛出一个令人困惑的错误

Nodejs app using Mailjet throwing a confusing error

我正在使用 Mailjet 构建一个应用程序,并使用他们的连接示例。

app.get('/send',function(req,res){
...        
    var request = mailjet
            .post("send")
            .request({
                <request stuff, email details>
            });
        request
            .on('success', function (response, body) {
                <handle response>
            })
            .on('error', function (err, response) {
                <handle error>
            });

出现此错误:

Unhandled rejection Error: Unsuccessful
    at /home/ubuntu/workspace/node_modules/node-mailjet/mailjet-client.js:203:23

当我转到 Mailjet 客户端并要求它记录错误时,它告诉我:

{ [Error: Unauthorized]
  original: null,
  ...

有人知道我应该从哪里开始进行故障排除吗?

更新:在错误输出中看到了这个:

header: 
  { server: 'nginx',
    date: 'Thu, 02 Mar 2017 14:04:11 GMT',
    'content-type': 'text/html',
    'content-length': '20',
    connection: 'close',
    'www-authenticate': 'Basic realm="Provide an apiKey and secretKey"',
    vary: 'Accept-Encoding',
    'content-encoding': 'gzip' },

所以它没有吃掉我的 API 密钥和秘密。谁能告诉我如何在 Cloud9 中将它们设置为环境变量?

您可以在~/.profile中设置环境变量。只读用户无法访问工作区目录 /home/ubuntu/workspace 之外的文件,因此人们将无法看到它们。

在终端中,你可以这样做:

$> echo "export MAILJET_PUBLIC=foo" >> ~/.profile
$> echo "export MAILJET_SECRET=bar" >> ~/.profile

然后,您将能够在使用 connect 方法时在 Node 中访问这些变量:

const mailjet = require ('node-mailjet')
  .connect(process.env.MAILJET_PUBLIC, process.env.MAILJET_SECRET)

运行器(来自 "run" 按钮)和终端将评估 ~/.profile 并使环境变量可用于您的应用程序。