Ошибка типа: notesExist.pu sh не является функцией? - PullRequest
0 голосов
/ 23 февраля 2020

Я просто новичок ie на nodeJs, и мне нужна ваша помощь

мой инструмент. js файл:

const fs = require('fs');
    const addNotes = function(name,age,birthday){
        const notesExist = loadNotes()
        notesExist.push({
            name: name,
            age: age,
            birthday:birthday
        })

    }
    const loadNotes = function (){
        try{
            binaryVersion = fs.readFileSync('./JsonFile/data.json');
            stringVersion = binaryVersion.toString();
            dataParsed = JSON.parse(stringVersion);
            return dataParsed;
    }
    catch(err){
        return [];
    }
}
module.exports = {
    addNotes: addNotes,
    loadNotes: loadNotes
}                                                                                                                             

мое вступление. js файл

yargs = require('yargs');
const utile = require('./utile.js');

yargs.command({
    command: 'add',
    describe: 'Adding new record',
    builder:{
        name:{
            describe:'note name',
            demandOption:true, // title option to be requires in the command line
            type:'string' //requie a string as title value
        },
        age:{
            describe:'note age',
            demandOption:true,
            type:'string' //require astring as body value
        },

        birthday:{
            describe:'note birthday',
            demandOption:true,
            type:'string' //require astring as body value
        },
    },
        handler: function(argv){
            //  console.log(chalk.green(chalk.red(argv.title)))
            /* console.log(chalk.green(chalk.green(argv.body)))  */
            utile.addNotes(argv.name,argv.age,argv.birthday);

        }
});

мои данные. json файл:

{"name":"Hannani","age":25,"birthday":1995}

Но когда я запускаю вступление. js file by: node intro.js add --name="booktitle" --age="dsds" --birthday="1995", я понял, что я хорошо ошибаюсь [Я потратил 3 часа, но я не нашел ничего, чтобы решить эту ошибку ] Ошибка:

/home/simo/Documents/nodeJs/node_modules/yargs/yargs.js:1195
      else throw err
           ^

TypeError: notesExist.push is not a function
    at Object.addNotes (/home/simo/Documents/nodeJs/utile.js:34:20)
    at Object.handler (/home/simo/Documents/nodeJs/intro.js:56:19)
    at Object.runCommand (/home/simo/Documents/nodeJs/node_modules/yargs/lib/command.js:240:40)
    at Object.parseArgs [as _parseArgs] (/home/simo/Documents/nodeJs/node_modules/yargs/yargs.js:1107:41)
    at Object.parse (/home/simo/Documents/nodeJs/node_modules/yargs/yargs.js:566:25)
    at Object.<anonymous> (/home/simo/Documents/nodeJs/intro.js:86:7)
    at Module._compile (internal/modules/cjs/loader.js:1151:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1171:10)
    at Module.load (internal/modules/cjs/loader.js:1000:32)
    at Function.Module._load (internal/modules/cjs/loader.js:899:14)

ps: я ничего не менял в своих файлах. js file .. Пожалуйста, что я делаю не так? Заранее спасибо!

1 Ответ

1 голос
/ 23 февраля 2020

THE data.json должен быть в формате массива, чтобы вы могли использовать pu sh. Примерно так

[{"name":"Hannani","age":25,"birthday":1995}]

Кроме того, поскольку это обычный json файл, вы можете просто потребовать его как есть, вместо использования fs для его чтения.

const data = require('./JsonFile/data.json')

Надеюсь, это поможет.

...