我正在使用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
如您所见,它与下面的我的文件夹路径匹配。
如何获取文件系统以查看该文件夹结构?当我将其用于验证存在的图像文件时,它工作得很好。
答案 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文件以及文件夹结构复制到分发包中。