我在使用AWS Signature计算时遇到问题。目标是读取作为URL(key,dateStamp,regionName,serviceName)的一部分传递的4,并使用它们来计算签名。我不是Node.js的专家,您的帮助和时间表示赞赏。
我的Node.js代码......
var express = require('express');
var app = express();
var port = process.env.PORT || 3000;
//Crypto
var Crypto = require('crypto-js');
// routes
app.get('/getSignature', function(req, res) {
var key = req.param('key');
var dateStamp = req.param('dateStamp');
var regionName = req.param('regionName');
var serviceName = req.param('serviceName');
var kDate = Crypto.HMAC(Crypto.SHA256, dateStamp, "AWS4" + key, {asBytes: true});
var kRegion = Crypto.HMAC(Crypto.SHA256, regionName, kDate, {asBytes: true});
var kService = Crypto.HMAC(Crypto.SHA256, serviceName, kRegion, {asBytes: true});
var kSigning = Crypto.HMAC(Crypto.SHA256, "aws4_request", kService, {asBytes: true});
res.send(key + ' ' + dateStamp + ' ' + regionName + ' ' + serviceName + ' ' + kSigning);
});
// start the server
app.listen(port);
console.log('Server started! At http://localhost:' + port);
我收到以下运行时错误:
TypeError:undefined不是函数 c:\ Users \ xxx \ WebstormProjects \ Unscriptd \ app.js:34:24 at Layer.handle [as handle_request] (C:\用户\ XXX \ WebstormProjects \ Unscriptd \ node_modules \表达\ lib中\路由器\ layer.js:95:5) 在下一个 (C:\用户\ XXX \ WebstormProjects \ Unscriptd \ node_modules \表达\ lib中\路由器\ route.js:131:13)
导入了Crypto-js库。
答案 0 :(得分:0)
第34行没有任何内容。第31行是最后一行。
答案 1 :(得分:0)
多德。我将你的代码复制到我的github(重现)。 https://github.com/ttwd80/so-nikolai-nodejs.git
以下是我所做的步骤
cd /tmp
rm -rf so-nikolai-nodejs
git clone https://github.com/ttwd80/so-nikolai-nodejs.git
cd so-nikolai-nodejs
wc -l app.js
npm install crypto-js
npm install express
node app.js
它告诉我:
Server started! At http://localhost:3000
不确定为什么会收到错误。
也许你可以尝试重复这些步骤?
问题是,你的错误抱怨第34行,但你的代码没有这一行。 您可能正在查看不同的文件并执行不同的文件。
让我知道它是怎么回事。
感谢。