将JSON导入Firebase时出现无效或意外令牌错误

时间:2020-09-15 00:00:39

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

我正在尝试使用此代码将json文件导入Firebase

var admin = require("firebase-admin");

var serviceAccount = require("./service_key.json");


admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: "MY DB URL"
});


const firestore = admin.firestore();
const path = require("path");
const fs = require("fs");
const directoryPath = path.join(__dirname, "files");


fs.readdir(directoryPath, function(err, files) {
  if (err) {
    return console.log("Unable to scan directory: " + err);
  }



  files.forEach(function(file) {
    var lastDotIndex = file.lastIndexOf(".");

    var menu = require("./files/" + file); #<---------


    menu.forEach(function(obj) {
      firestore
        .collection(file.substring(0, lastDotIndex))
        .doc(obj.itemID)
        .set(obj)
        .then(function(docRef) {
          console.log("Document written");
        })

        .catch(function(error) {
          console.error("Error adding document: ", error);
        });
    });
  });
});


我认为我已经将问题缩小到这一行: var menu = require(“ ./ files /” + file)

我只是想不出问题所在。我已经成功地在一个文件上运行了该文件,并在另一个文件上进行了尝试,现在这两个文件都不再起作用。我已经清除了Firestore,所以里面没有任何东西,我想我已经消除了json文件的问题。

我在Mac上,因此路径错误吗?我不确定

Node.js脚本在包含子文件夹'files'的文件夹中运行。

1 个答案:

答案 0 :(得分:1)

这是一个众所周知的问题,require无法使用变量。

您是对的,此行导致了此问题。不幸的是,没有简单的魔术解决方案(至少我还没有找到)。

我在那里进行了一些研究,但是还没有找到任何文档清楚地说“这是行不通的”。这与执行顺序有关,我相信require语句会在其余代码或类似代码之前执行。

我强烈建议研究这个主题。如果您用谷歌搜索:“ js require with variable”,“在js中动态需求”或类似的内容。您会发现各种问题,有关in的文章,并且我相信您还会找到许多尝试解决它的方法...