首页 > 解决方案 > object["#"] 已定义且未定义?

问题描述

我有一些 json 文件,想将它们保存为更大对象中的对象,但是当我写“objects [”#“]”时它会给出一个错误,因为它是未定义的,但是如果我在控制台中将它写在哪里.. . 它被定义了吗?

我试过 JSON.stringify 和 "\"#\"" 都没有工作

window.objects = {}
fs.readdir("default_objects", (err, files) => {
  for (file of files) {
    if (file == ".json") objects[" "] = JSON.parse(fs.readFileSync('default_objects/.json', 'utf8'))
    else if (file.match(new RegExp('.*\.json')) && file == file.match(new RegExp('.*\.json'))[0]) objects[`${file.replace('.json','')}`] = JSON.parse(fs.readFileSync(`default_objects/${file}`, 'utf8'))
  }
})
console.log(objects["#"])
//undefined even though in the default_objects folder there is a #.json file

它应该可以工作,我看不出为什么不这样做。它说未定义,但它应该是 json 文件中的对象,但它在 Windows 控制台中工作?(当我输入 objects["#"] 并按 Enter 时,它会给出正确的输出)顺便说一下,我正在使用电子。更新:我尝试将结果记录在终端中,但它也未定义?更新:我在 fs.readdir 调用的回调中尝试了 console.logging 它,它工作但值不会在回调之外更新?

标签: javascriptnode.js

解决方案


请改用 fs.readdirSync。fs.readdirSync 将提供一个文件数组,这些文件将在运行其他代码之前处理


推荐阅读