request-promise
でasync/awaitを試していたところ、次のエラーが発生しました。
RequestError: Error: no auth mechanism defined
at new RequestError (node_modules/request-promise-core/lib/errors.js:14:15)
at Request.plumbing.callback (node_modules/request-promise-core/lib/plumbing.js:87:29)
at Request.RP$callback [as _callback] (node_modules/request-promise-core/lib/plumbing.js:46:31)
at self.callback (node_modules/request/request.js:188:22)
at Auth.onRequest (node_modules/request/lib/auth.js:133:18)
at Request.auth (node_modules/request/request.js:1360:14)
at Context.<anonymous> (test/routes.js:37:41)
From previous event:
at Request.plumbing.init (node_modules/request-promise-core/lib/plumbing.js:36:28)
at Request.RP$initInterceptor [as init] (node_modules/request-promise-core/configure/request2.js:41:27)
at new Request (node_modules/request/request.js:130:8)
at request (node_modules/request/index.js:54:10)
at Context.<anonymous> (test/routes.js:37:24)
これは、MongoDBで新しいユーザーを作成することになっている、最近作成したAPIエンドポイントです。 Passport戦略によって提供される基本認証を使用し、Postmanで動作することをテストしました。このエラーがスローされる理由が正確にはわかりません。
私のリクエストコード(Mochaを使用):
it("creates a new user", async () => {
const options = {
method: "POST",
uri: `http://localhost:${process.env.PORT}/api/users`,
headers: {
"User-Agent": "Request-Promise",
"Content-Type": "application/json"
},
body: {
email: "[email protected]",
password: "password",
firstName: "John",
lastName: "Smith"
},
json: true
};
const resp = await request(options).auth(APP_ID, SIGNATURE, false);
expect(resp).to.be.an("object");
});
編集:ノード8.2.1とnpm5.3.0を使用していることも追加する必要があります。
以下から変更することで私のために解決しました:
auth: { Bearer: token }
に:
auth: { bearer: token }
'bearer'の大文字と小文字の違いに注意してください。
この解決策は私のために働きます。ヘッダー内にトークンを配置する必要がありました:
var rp = require('request-promise');
var uri = 'uri_for_my_post_request';
var token = 'access_token';
var body = {
title: 'My Title',
content : 'My content'
};
var sendPost = async(my_uri,my_token,my_body)=>{
var options = {
method: 'POST',
headers:{
Authorization: ' Bearer ' + my_token
},
uri: my_uri,
body: my_body,
json: true
};
const response = await rp(options);
console.log(response);
}
sendPost(uri,token,body);
これは通常、適切な資格情報を提供しないことが原因で発生します。エラーを発生させるコードは見つけることができます ここ 。テストでAPP_ID
とSIGNATURE
がundefined
ではないことを確認しましたか?