Twilio 错误“需要用户名”

twilio error 'username required'

提问人:Champa 提问时间:7/11/2017 更新时间:11/18/2023 访问量:27128

问:

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

评论

0赞 enzoborgfrantz 7/11/2017
不相关,但你也有一个错别字client.messages.creat({client.messages.create({

答:

0赞 philnash 7/11/2017 #1

Twilio 开发人员布道者在这里。

除了 Champa 在评论中指出的错别字之外,我想我知道你哪里出了问题。您的代码当前具有:creat

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

我猜它应该有类似的东西.process.env.TWILIO_ACCOUNT_SID

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

让我知道这是否有帮助。

3赞 Champa 7/12/2017 #2

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

@philnash我更改了它并修复了创建错别字,但终端仍然说“用户名是必需的”

19赞 Shanky 7/12/2017 #3

将它们保存到文件夹根目录下的 .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);```
1赞 thehme 5/17/2018 #4

我今天遇到了这个问题,并且在运行 twilio 测试时收到消息。由于我使用的是 dotenv,所以我有一个包含环境变量的文件,这就是我犯错误的地方。我们还有另一个带有 and 变量的应用程序,所以我复制了它们并留在关键字中,即 ,但如果使用 ,则不需要关键字。我删除并重新运行了我的测试脚本,一切正常,例如Error: username is required.envSIDTOKENexportexport TWILIO_ACCOUNT_SID=...dotenvexportexport

TWILIO_ACCOUNT_SID=***
TWILIO_AUTH_TOKEN=***
9赞 Aaron Billings 10/24/2019 #5

我也有同样的问题。为我修复它正在做什么

  • 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));

1赞 Akolade Adesanmi 11/7/2019 #6

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

我们如何解决这个问题是惊人的:如何?

当您对环境变量使用名为 .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赞 Vishnu Mohan 6/3/2021 #7

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

2赞 Sahil Rajpal 7/20/2021 #8

注意 -:这根本不是一个好方法,而只是一个解决方法。我会尽快编辑答案,找到正确的方法。这只是一个在我的情况下有效的技巧。

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

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

0赞 Brennen 8/17/2021 #9

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

评论

0赞 Nadeem Taj 8/18/2021
你在目录中是什么意思?那么环境变量的目的是什么呢?
0赞 Brennen 8/20/2021
在我的项目结构中,您为启动服务器而执行的文件位于 中,该文件位于项目的根目录中。当我遇到这个问题时,我正在 /bin 目录中运行该文件。当我切换到根目录并启动服务器时,问题就解决了。/bin.envnode bin/server.js
0赞 Harshvardhan Shete 8/29/2021 #10

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

0赞 Basudev Bharat Bhushan 2/11/2022 #11

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

-1赞 harukim 11/18/2023 #12

如果您使用 Firebase,您可以将“.env”文件移动到 Firebase 根文件夹,这没关系。