Как получить доступ к файлу JSON в NativeScript? - PullRequest
1 голос
/ 27 апреля 2020

Здравствуйте, я пытаюсь получить доступ к файлу JSON в моем проекте nativescrpt. я пробовал это

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);
    });
}

, но не удалось получить данные из JSON файла

Ответы [ 3 ]

1 голос
/ 28 апреля 2020

Если этот файл находится в вашем исходном проекте - вы должны убедиться, что он сохранен веб-пакетом.

В вашем webpack.config. js файл

            new CopyWebpackPlugin([
                { from: { glob: "**/*.jpg" } },
                { from: { glob: "**/shared/*.json" } },
                { from: { glob: "**/*.png" } }
1 голос
/ 28 апреля 2020

Сначала убедитесь, что файл включен в ваш файл webpack.config. js в вашем проекте. Как сказал @dashman.

Найдите это в своем веб-пакете

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

и измените на вот так

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

После этого в вашем коде также много ошибок. Изменить как это

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 голос
/ 27 апреля 2020

Сначала вы должны получить папку и сделать это, используя начальную точку knownFolders.


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

knownFolders.currentApp().getFolder('shared').getFile('message.json').readText ...;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...