我使用 Nodejs 的 qr-image
插件生成二维码,效果很好。
问题是在 ejs 中显示结果图像。
var express = require('express');
var router = express.Router();
var qr = require('qr-image');
router.get('/', function(req, res) {
var code = qr.image("text to show in qr", { type: 'png', ec_level: 'H', size: 10, margin: 0 });
res.type('png');
code.pipe(res);
// res.render('index', { title: 'QR Page', qr: code });
});
当我取消注释最后一行时,nodejs 崩溃了。
如何发送代码
作为变量查看?
更新:
此代码在结果页面中返回 [object Object]
。
var code = qr.image("text to show in qr", { type: 'png', ec_level: 'H', size: 10, margin: 0 });
res.render('index', { title: 'QR Page', qr: code });
console.log(code) 也显示了这一点:
{ _readableState:
{ highWaterMark: 16384,
buffer: [],
length: 0,
pipes: null,
pipesCount: 0,
flowing: false,
ended: false,
endEmitted: false,
reading: false,
calledRead: false,
sync: true,
needReadable: false,
emittedReadable: false,
readableListening: false,
objectMode: false,
defaultEncoding: 'utf8',
ranOut: false,
awaitDrain: 0,
readingMore: false,
decoder: null,
encoding: null },
readable: true,
domain: null,
_events: {},
_maxListeners: 10,
_read: [Function] }
最佳答案
您正在尝试将渲染图像填充到模板引擎中;这是行不通的。
您应该在模板中使用图像标记,指向响应图像的 URL。
//根据评论编辑
router.get('/qr/:text', function(req,res){
var code = qr.image(req.params.text, { type: 'png', ec_level: 'H', size: 10, margin: 0 });
res.setHeader('Content-type', 'image/png');
code.pipe(res);
}
然后在您的 html 模板中,制作一个 src 设置为 /qr/whatever text
的图像标签,您应该处于良好状态。
关于node.js - Nodejs - 如何在 View 中显示 qr-image 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27490742/