twilio 错误“需要用户名”

问题描述 投票:0回答:12

var express = require('express');
var router = express.Router();
var bodyParser = require('body-parser');
var nodemailer = require('nodemailer');
var TWILIO_TOKEN = "270ff32fe16828869dc30e0c6926fa9e";
var client = require('twilio')(process.env.AC55a59221acb23a5aa6f046740bb73317, process.env.TWILIO_TOKEN);
router.use(bodyParser.urlencoded({extended: true}));
router.use(bodyParser.json());

router.post('/', function(req, res) {
    console.log('this is the req', req.body);
    client.messages.creat({
        to:'+19522209630',
        from:'+17633249718',
        body:'hello World'
    }, function(err, data) {
        if (err) {
            console.log('err', err);
            console.log('data', data);
        }
    });//en d of sendMessage
    res.send(200);
});

module.exports = router;
/Users/moisesmiguelhernandez/Documents/prime/solo_project/node_modules/twilio/lib/rest/Twilio.js:101
    throw new Error('username is required');
    ^

Error: username is required
    at new Twilio (/Users/moisesmiguelhernandez/Documents/prime/solo_project/node_modules/twilio/lib/rest/Twilio.js:101:11)
    at initializer (/Users/moisesmiguelhernandez/Documents/prime/solo_project/node_modules/twilio/lib/index.js:8:10)
    at Object.<anonymous> (/Users/moisesmiguelhernandez/Documents/prime/solo_project/routes/sendMessage.js:6:31)
    at Module._compile (module.js:569:30)
    at Object.Module._extensions..js (module.js:580:10)
    at Module.load (module.js:503:32)
    at tryModuleLoad (module.js:466:12)
    at Function.Module._load (module.js:458:3)
    at Module.require (module.js:513:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/Users/moisesmiguelhernandez/Documents/prime/solo_project/server.js:10:19)
    at Module._compile (module.js:569:30)
    at Object.Module._extensions..js (module.js:580:10)
    at Module.load (module.js:503:32)
    at tryModuleLoad (module.js:466:12)
    at Function.Module._load (module.js:458:3)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] start: `node server.js`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the [email protected] start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/moisesmiguelhernandez/.npm/_logs/2017-07-11T15_02_02_750Z-debug.log

我收到错误消息,提示需要用户名。我正在尝试使用 twilio。我关注了 YouTube 视频,我也像他一样拥有它。对于如何解决这个问题,有任何的建议吗? P.S 索引文件是终端错误信息

javascript twilio
12个回答
19
投票

将它们保存到文件夹根目录下的 .env 文件中

TWILIO_TOKEN = "270ff32fe16828869dc30e0c6926fa9e"
TWILIO_ACCOUNT_SID = "AC55a59221acb23a5aa6f046740bb73317"

然后安装

npm install dotenv --save

之后,您可以在文件中使用这些环境变量,如下所示:

require('dotenv');
var client = require('twilio')(process.env.TWILIO_ACCOUNT_SID, process.env.TWILIO_TOKEN);```

9
投票

我也有同样的问题。为我解决这个问题的方法是

  • npm 安装 dotenv
  • require('dotenv').config()

然后我添加了我的

TWILIO_ACCOUNT_SID=***

TWILIO_AUTH_TOKEN=***

完整代码:

require('dotenv').config();

const accountSid = process.env.ACCOUNT_SID;
const authToken = process.env.AUTH_TOKEN;
const client = require('twilio')(accountSid, authToken);

client.calls
  .create({
    url: 'http://demo.twilio.com/docs/voice.xml',
    to: process.env.CELL_PHONE,
    from: process.env.TWIL_NUM,
  })
  .then(call => console.log(call.sid))
  .catch(err => console.log(err));


3
投票

var TWILIO_TOKEN = "270ff32fe16828869dc30e0c6926fa9e";
var TWILIO_ACCOUNT_SID = "AC55a59221acb23a5aa6f046740bb73317";
var client = require('twilio')(process.env.TWILIO_ACCOUNT_SID, process.env.TWILIO_TOKEN);

@philnash 我更改了它并修复了创建拼写错误,但终端仍然显示“需要用户名”


2
投票

注意-:这根本不是一个好方法,而只是一个解决方法。一旦找到正确的方法,我将立即编辑答案。这只是一个在我的案例中有效的技巧。

const client = require('twilio')(<YOUR_ACCOUNT_SID>, <YOUR_ACCOUNT_KEY>);

基本上直接使用键,而不是通过任何变量引用。


1
投票

这里是 Twilio 开发者布道者。

除了 Champa 在评论中指出的

creat
中的错字之外,我想我知道你错在哪里。您的代码当前有:

var client = require('twilio')(process.env.AC55a59221acb23a5aa6f046740bb73317, process.env.TWILIO_TOKEN);

我猜它应该有类似

process.env.TWILIO_ACCOUNT_SID
的东西。

帐户 sid 实际上是访问 API 的用户名,这就是错误消息中这样说的原因。

请告诉我这是否有帮助。


1
投票

我今天遇到了这个问题,并在运行 twilio 测试时收到消息

Error: username is required
。由于我使用的是 dotenv,所以我有一个包含环境变量的
.env
文件,这就是我犯错误的地方。我们还有另一个带有
SID
TOKEN
变量的应用程序,因此我复制了它们并保留在
export
关键字中,即
export TWILIO_ACCOUNT_SID=...
,但如果使用
dotenv
,则不需要
export
关键字。我删除了
export
并重新运行我的测试脚本,一切正常,例如

TWILIO_ACCOUNT_SID=***
TWILIO_AUTH_TOKEN=***

1
投票

我和一位同事一起工作时遇到了同样的错误。我尝试了几乎所有的解决方案,但对我不起作用(这里的大多数解决方案在某种意义上都是相同的)。

我们如何解决这个问题真是太神奇了:如何解决?

当您使用名为 .env 的文件作为环境变量时,您需要仔细检查创建该文件的位置

  • .env
    文件必须在您的根目录中创建。这意味着必须位于您的项目文件夹内,而不是位于项目内的子文件夹内。
  • 当您要使用它时,请确保引用正确的变量。这个错误是 与这个问题相关。比如
// index.js
// this wrong, notice process.env.AC55a59221acb23a5aa6f046740bb73317 in client variable
TWILIO_TOKEN = "270ff32fe16828869dc30e0c6926fa9e";
var client = require('twilio')(process.env.AC55a59221acb23a5aa6f046740bb73317, process.env.TWILIO_TOKEN);

这是正确的

process.env.TWILIO_ACCOUNT_SID

// .env
TWILIO_ACCOUNT_SID=AC55a59221acb23a5aa6f046740bb73317

Twilio 文档

对我们犯的错误感兴趣,这是

.env
文件的错误放置。


0
投票

我之前遇到过这个错误,所以添加到上面的答案中,确保 .env 文件位于根目录中,所有拼写都正确并且使用了 dotenv 包。


0
投票

我弄清楚了我遇到的问题。启动服务器时,请确保您位于包含 .env 文件的目录中。


0
投票

我犯的愚蠢错误是,我使用了“SMS_SID:YourSID”,它必须是“SMS_SID = YourSID”。


0
投票

就我而言,一切都是正确的,除了我使用测试凭证的 account_sid 和 auth_token 而不是 Live 凭证。


0
投票

如果你使用firebase,你可以将'.env'文件移动到firebase根文件夹,那就没问题了。

© www.soinside.com 2019 - 2024. All rights reserved.