Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – TypeError:Key必须是新Hmac的缓冲区(crypto.js:91:16)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
Server.js

const express = require('express');
const bodyParser = require('body-parser');
const app = express();

// server port is 3000
let port = 3000;

// use bodyParser.json and urlencoded
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
  extended: true,}));

// use api/v1,require routes/app.js
app.use('/api/v1',require('./routes/app.js')(express));

exports.server = app.listen(port,() => {
  console.log('Server active on port',port);
});

app.js

// require url shortener
const shurl = require('../modules/shurl');

module.exports = (express) => {
  const router = express.Router();

  router.get('/status',(req,res) => {
    res.json({
      healthy: true,})
  });

  router.post('/urls',res) => {
      res.send(shurl(req,res));
  });

  return router;
}

shurl.js

const crypto = require('crypto');

module.exports = (url,res) => {
  // set the shortened url prefix
  let prefix = 'shurl.io/';
  // get the url data
  let hashUrl = url.body.url;
  // create the hash
  let hash = crypto.createHmac('sha256',hashUrl).digest('hex');
  // shorten the hash length to 7
  hashUrl = hash.substr(0,7);
  // create the shortened url
  let shortened = prefix + hashUrl;
  // send the shortened url
  res.json({shortUrl: shortUrl});
}

错误

TypeError: Key must be a buffer
    at new Hmac (crypto.js:91:16)
    at Object.Hmac (crypto.js:89:12)
    at module.exports (C:\xampp\htdocs\url-shortener\src\modules\shurl.js:16:21)
    at router.post (C:\xampp\htdocs\url-shortener\src\routes\app.js:21:16)
    at Layer.handle [as handle_request] (C:\xampp\htdocs\url-shortener\node_modules\express\lib\router\layer.js:95:5)
    at next (C:\xampp\htdocs\url-shortener\node_modules\express\lib\router\route.js:131:13)
    at Route.dispatch (C:\xampp\htdocs\url-shortener\node_modules\express\lib\router\route.js:112:3)
    at Layer.handle [as handle_request] (C:\xampp\htdocs\url-shortener\node_modules\express\lib\router\layer.js:95:5)
    at C:\xampp\htdocs\url-shortener\node_modules\express\lib\router\index.js:277:22
    at Function.process_params (C:\xampp\htdocs\url-shortener\node_modules\express\lib\router\index.js:330:12)

究竟是什么导致了这个错误,是否有人知道修复?当我尝试POST以创建缩短的URL @ 127.0.0.1:3000/api/v1/urls时出现此错误

解决方法

错误来自你的shurl.js

这条线:
让hashUrl = url.body.url;
应该让hashUrl = url.body.url.toString();

或者让let hash = crypto.createHmac(‘sha256’,hashUrl).digest(‘hex’);让hash = crypto.createHmac(‘sha256’,hashUrl.toString()).digest(‘hex’);

https://nodejs.org/api/crypto.html#crypto_class_hmac

大佬总结

以上是大佬教程为你收集整理的node.js – TypeError:Key必须是新Hmac的缓冲区(crypto.js:91:16)全部内容,希望文章能够帮你解决node.js – TypeError:Key必须是新Hmac的缓冲区(crypto.js:91:16)所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。