附加JSON数组时无法调用未定义的方法“ push”

Ini*_*ler -2 javascript json node.js web

不断出现错误,我无法将JSON对象推送到JSON数组。我所做的唯一更改是该函数位于另一个文件中,因此我将其称为模块。

index.js

var mods = require('../server/api/getUserMods.js');

var usernamePerms = [ 'settings', 'mod1', 'mod2' ]

console.log(mods.getUserMods(usernamePerms));
Run Code Online (Sandbox Code Playgroud)

getUserMods.js

var fs = require('fs');

exports.getUserMods = function(input) {
  var umkModules = '../umk_modules/';
  var modules = '{"module":[]}';
  var moduleParse = JSON.parse(modules);
  for (i = 0; i < input.length; i++) {
    console.log("Parsing: " + input[i]);
    console.log("At: " + umkModules.concat(input[i],"/","module-view.json"));
    console.log();
    var readModule = JSON.parse(fs.readFileSync(umkModules.concat(input[i],"/","module-view.json"), 'utf8'));
    console.log(readModule);
    moduleParse['modules'].push(readModule);
  };
  modules = JSON.stringify(moduleParse);
  return modules;
};
Run Code Online (Sandbox Code Playgroud)

该函数getUserMods接收数组字符串,并在指定的文件路径中搜索以找到一个名为的文件,module-view.json然后将其附加到空的JSON数组中。

跑的时候我明白了...

moduleParse['modules'].push(readModule);
Run Code Online (Sandbox Code Playgroud)

Jos*_*eph 5

moduleParse['module'].push(readModule);
Run Code Online (Sandbox Code Playgroud)

您的财产的名称module不是modules。而且我不完全确定为什么您可以简单地使用JSON:

var moduleParse = {
  module:[]
}
Run Code Online (Sandbox Code Playgroud)