未捕获的类型错误:无法读取属性'root'的未定义

Uncaught TypeError: Cannot read property 'root' of undefined

本文关键字:属性 未定义 root 读取 类型 错误      更新时间:2023-09-26

我试图在一个html5 web应用程序中实现离线功能的文件api存储,但遇到了一些问题。

我在一个包含的JS文件中有以下代码(我正在创建一个用于处理文件api的库):

window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem;
window.requestFileSystem(window.TEMPORARY, 5 * 1024 * 1024, initFS, errorHandler);
function initFS(fs) {
    alert("Welcome to Filesystem! It's showtime :)"); // Just to check if everything is OK :)  
    fs.root.getDirectory('files', { create: true }, function(dirEntry) {
        alert('You have just created the ' + dirEntry.name + ' directory.');
    }, errorHandler);
}

在另一个JS文件中(我的大部分工作(业务逻辑)都在这里完成),我有:

//INITALIZE
function InitalizeStore() {
    initFS();
    //more init's done here
}

我遇到的问题是在initFS函数中,fs.root.getDirectory('files'...抛出一个错误:Uncaught TypeError: Cannot read property 'root' of undefined

我尝试过一些文件api包装器(filer.js和webfs.js),甚至尝试过编写自己的包装器,但在实现文件api方面运气不佳(每个包装器都会产生相同的错误)。

我尝试过使用应用程序缓存,但由于应用程序的性质,我遇到了内存限制(空间不足)。此外,这将只在Chrome中运行。

如何将fs对象初始化为适当的"文件系统"对象,以便脱机读/写文件?

错误是因为fsundefined。并且undefined不能具有类似root的属性。

写入CCD_ 9以期望为CCD_。

function initFS(fs) {
    fs.root.getDirectory(...);
}

但是,它是在没有任何参数的情况下调用的,所以fs不会有这样的值。

function InitalizeStore() {
    initFS();
    // ...
}

如何将fs对象初始化为正确的"文件系统"对象,以便脱机读/写文件?

您将其用作requestFileSystem()的回调,这在其他地方已经在做了。

window.requestFileSystem(window.TEMPORARY, 5 * 1024 * 1024, initFS, errorHandler);

如果您希望创建等待InitializeStore()被调用,请在函数中移动该行:

function InitalizeStore() {
    window.requestFileSystem(window.TEMPORARY, 5 * 1024 * 1024, initFS, errorHandler);
    // ...
}