Hola Estoy intentando acceder a un archivo JSON para mi proyecto nativescrpt. probé esto

let fs = require("tns-core-modules/file-system");
let documents = fs.knownFolders.currentApp();

function GetJsonData(callback) {
    let filePath = documents.getFile("./shared/message.json");
    let array;
    let jsonData;

jsonFile.readText().then(function (content) {
    try {
        jsonData = JSON.parse(content);
        array = new observableArrayModule.ObservableArray(jsonData);
    } catch (err) {
        throw new Error('Could not parse JSON file');
    }
}, function (error) {
    throw new Error('Could not read JSON file');
});

function showJsonData() {
    GetJsonData((array) => {
        console.log(array);
    });
}

Pero no se pudo obtener datos del archivo JSON

1
Bhavik Kalal 27 abr. 2020 a las 18:05

3 respuestas

La mejor respuesta

Primero debe verificar que el archivo esté incluido en su archivo webpack.config.js en su proyecto. Como dijo @dashman.

Encuentra esto en tu paquete web

new CopyWebpackPlugin([
    { from: { glob: "fonts/**" } },
    { from: { glob: "**/*.jpg" } },
    { from: { glob: "**/*.png" } },
], { ignore: [`${relative(appPath, appResourcesFullPath)}/**`] }),

Y cambiar a gustar esto

new CopyWebpackPlugin([
    { from: { glob: "fonts/**" } },
    { from: { glob: "**/*.jpg" } },
    { from: { glob: "**/shared/*.json" } },
    { from: { glob: "**/*.png" } },
], { ignore: [`${relative(appPath, appResourcesFullPath)}/**`] }),

Después de eso, su código también tiene muchos errores. Cambia así

let fs = require("tns-core-modules/file-system");
let documents = fs.knownFolders.currentApp();

function GetJsonData(callback) {
    let jsonFile = documents.getFile("./shared/message.json");
    jsonFile.readText().then(function (content) {
        try {
            var jsonData = JSON.parse(content);
            callback(jsonData);
        } catch (err) {
            callback(err);
            throw new Error('Could not parse JSON file');
        }
    }, function (error) {
        callback(error);
        throw new Error('Could not read JSON file');
    });
}

function showJsonData() {
    GetJsonData((array) => {
        console.log(array);
    });
}
1
Shubham Panchal 28 abr. 2020 a las 08:05

Primero debe buscar la carpeta, y debe hacerlo utilizando el punto de inicio knownFolders.


import { knownFolders } from 'tns-core-modules/file-system';

knownFolders.currentApp().getFolder('shared').getFile('message.json').readText ...;
1
Ian MacDonald 27 abr. 2020 a las 15:33

Si este archivo está en su proyecto fuente, debe asegurarse de que el paquete web lo guarde.

En su archivo webpack.config.js

            new CopyWebpackPlugin([
                { from: { glob: "**/*.jpg" } },
                { from: { glob: "**/shared/*.json" } },
                { from: { glob: "**/*.png" } }
1
dashman 27 abr. 2020 a las 21:47
61461925