Firebase云功能 - "未定义" npm依赖关系的错误&包括一个带有客户端代码的模块

时间:2018-02-27 16:10:20

标签: node.js firebase google-cloud-functions

我正在使用 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文件的第二行。

问题似乎是代码是在浏览器中运行时编写的。我是否仍然可以以某种方式将此包作为依赖项包含在云函数中?

非常感谢

1 个答案:

答案 0 :(得分:0)

为了回答,像我这样的人你只需要更换

windowglobal,它适用于 node.js/云函数。