Модуль Nativescript fs не видит папки или файлы - PullRequest
1 голос
/ 07 июня 2019

Я использую учебник Nativescript для создания карусели здесь .

Проблема, с которой я сталкиваюсь, заключается в том, что я получаю следующую ошибку (минус мое запутывание)

Error: Failed to load component from module: undefined.xml or file: /data/data/{Obfuscated}/files/app/pages/welcome/slides/slide1.xml

когда он пытается загрузить XML-файлы в этой строке (полный фрагмент ниже):

slides.push(builder.load(slidePath))

После некоторой проверки я обнаружил, что файловая система не видит загружаемые файлы. Мой код такой же, как код учебников. Я прошел через это построчно (даже выполняя diff), и код на самом деле тот же.

Вот лучше посмотрите путь к файлу, который он задушил, вы можете сравнить его с изображением, которое я предоставил ниже: / данные / данные / {Обфусцированный} /files/app/pages/welcome/slides/slide1.xml

Я могу убедиться, что структура папок такая же, как в учебнике app/pages/welcome/slides.slide1.xml, но когда страница загружается, я получаю эту ошибку, и она никогда не загружает xml.

Вот полный фрагмент:

private loadSlides(slideFiles, slidesPath) {
    return new Promise(function (resolve, reject) {
      const slides = []
      const currentAppFolder = fs.knownFolders.currentApp();
      const path = fs.path.normalize(currentAppFolder.path + "/" + slidesPath);
      slideFiles.forEach((dataFile, i) => {
        const slidePath = path + "/" + dataFile;
        console.log(slidePath);
        // Here's where it crashes
        slides.push(builder.load(slidePath))
      });

      resolve(slides);
    });
  }

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

Строка console.log отображает это:

/data/data/{myobfuscation}/files/app/pages/welcome/slides

Как вы видите, он соответствует моему пути к папке ниже.

Как заставить файловую систему видеть структуру этой папки? Она прекрасно работает, когда я использую ее для проверки файлов изображений существования.

Вот изображение структуры папок: enter image description here

1 Ответ

1 голос
/ 08 июня 2019

Webpack никогда не узнает, что вам понадобятся эти XML-файлы во время выполнения, вам придется настроить webpack.config.js, чтобы включить эти файлы в комплект.

Обновите конфигурацию CopyWebpackPlugin следующим образом:

        // Copy assets to out dir. Add your own globs as needed.
        new CopyWebpackPlugin(
            [
                { from: { glob: "assets/**" } },
                { from: { glob: "fonts/**" } },
                { from: { glob: "**/*.jpg" } },
                { from: { glob: "**/*.png" } },
                { from: { glob: "**/*.xml" } },
            ],
            { ignore: [`${relative(appPath, appResourcesFullPath)}/**`] },
        ),

При добавлении { from: { glob: "**/*.xml" } }, копируются все файлы XML вместе со структурой папок в пакет.

...