const fs = wx.getFileSystemManager()
fs.open({
filePath: `${wx.env.USER_DATA_PATH}/hello.txt`,
flag: 'a+',
success(res) {
console.log(res.fd)
}
})
这段代码是从官方文档复制下来的,运行时却报“fs.open is not a function”。
但我在另一个js中,用fs.savefile却成功把下载的文件保存到本地,代码如下:
wx.getFileSystemManager().saveFile({
tempFilePath:res1.tempFilePath,
filePath:wx.env.USER_DATA_PATH+'/'+thisname,
success:(res2)=>{
wx.showToast({
title: '文件已保存到'+res2.savedFilePath,
icon:'none'
})
console.log(res2.savedFilePath)
},
fail:err=>{
console.log(err)
}
})
我实在想不到我还能做些什么了!
看起来可能有两种原因:
一种是基础库注入时发生了异常,导致api没有引入进来,导致你第一行给fs赋值的不是预期的文件管理器对象。而你在测试另外两种代码的时候因为触发了重新编译,重新读取注入api基础库,结果就正常了。这种情况下你fs.open应该就恢复正常了(表现出来的就是偶发的错误)。
还有一种比较少见的情况,就是代码看起来没问题,就是运行起来报错。删掉重新手写一遍就好了。我还没摸清具体是因为我粗心写错了哪个字母?还是因为异常空格、换行符、制表符、编码、BOM头还是别的什么原因导致的。。暂时属于比较灵异的事儿。
没报错呀
const fs = wx.getFileSystemManager()
fs.readFile({
filePath: wx.env.USER_DATA_PATH+'/'+options.filename,
//encoding: 'utf8',
position: 0,
success(res) {
console.log(res.data)
},
fail(res) {
console.error(res)
}
})
我换了这个,居然又成功把文件内容读了出来。
官方文档的例子不能用,那为何还要给出来坑人?