Nativescript fs模块看不到文件夹或文件

时间:2019-06-07 01:13:40

标签: nativescript angular2-nativescript

我正在使用Nativescript教程来创建轮播here

我遇到的问题是出现以下错误(减去混淆)

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

经检查,我发现文件系统看不到我正在加载的文件。我的代码与教程代码相同。我已经逐行(甚至做了一个差异),代码实际上是相同的。

这里可以更好地查看它阻塞的文件路径,您可以将其与我在下面提供的图像进行比较: / data / data / {已混淆}​​ /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);
    });
  }

当我通过调试并使用文件系统模块测试路径是否存在时进行测试时...即使文件夹结构确实以教程中的方式存在,它也总是返回false。

console.log行显示以下内容:

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

如您所见,它与下面的我的文件夹路径匹配。

如何获取文件系统以查看该文件夹结构?当我将其用于验证存在的图像文件时,它工作得很好。

这是文件夹结构的图像: enter image description here

1 个答案:

答案 0 :(得分:1)

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文件以及文件夹结构复制到分发包中。