我正在使用 Firebase 开发应用,并且我使用云功能来生成QR码等等。
我有两个问题:
1,我试图在云功能中使用qrcodejs npm包。
我在sudo npm install --save qrcodejs
目录中运行了functions
。
这是package.js
目录中functions
文件的相关部分:
"dependencies": {
"firebase-admin": "~5.8.1",
"firebase-functions": "^0.8.1",
"kjua": "^0.1.2",
"qrcodejs": "^1.0.0"
},
部署并运行代码后,我在云功能日志中收到' QRCode未定义' 错误。
这是我的 functions / index.js 文件:
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
var qrcodejs = require('qrcodejs')
exports.events = functions.https.onRequest((req, res) => {
const eventID = req.path
const promise = admin.database()
.ref('events' + eventID)
.once('value')
return promise.then(result => {
var qrcode = new QRCode("test", {
text: "http://jindo.dev.naver.com/collie",
width: 128,
height: 128,
colorDark : "#000000",
colorLight : "#ffffff",
correctLevel : QRCode.CorrectLevel.H
});
var html = `
<!doctype html>
<head>
<title>${result.val().title}</title>
</head>
<body>
${qrcode}</br>
${result.val().title}
</body>
</html>`
return res.status(200).send(html);
});
});
错误指向此行: var qrcode = new QRCode("test", {
。
我非常确定我在插入html字符串时也错了,但错误指向上面的行。
2,我也试过使用另一个qr代码npm包,kjua。我更喜欢使用 kjua ,但我还有其他问题。
运行firebase deploy
后,我在&{39; i functions: preparing functions directory for uploading...
&#39;步骤:
ReferenceError: window is not defined
它指向functions/node_modules/kjua/dist/kjua.min.js
文件的第二行。
问题似乎是代码是在浏览器中运行时编写的。我是否仍然可以以某种方式将此包作为依赖项包含在云函数中?
非常感谢
答案 0 :(得分:0)
为了回答,像我这样的人你只需要更换
window
和 global
,它适用于 node.js/云函数。