在小程序中通过 FileSystem 使用 wx.env.USER_DATA_PATH 创建文件夹,在线上监控中发现很多如下报错:
access:fail no such file or directory, access wxfile://usr/xxx/
mkdir:fail no such file or directory "wxfile://usr/xxx/"
根据监控数据显示,所有报错来源全来自 window 7用户 (猜测是使用PC微信进入的)
代码如下所示:
const PATH = `${wx.env.USER_DATA_PATH}/xxx/`;
fs.access({
path: PATH,
success: () => resolve(), // 文件存在,直接返回
fail: (e) => fs.mkdir({
dirPath: PATH,
success: () => resolve(), // 创建成功
fail: (err) => {
if (err.errMsg.indexOf('already exists') > -1) {
// 理论上经过access后不可能进入这里,执行mkdir一定文件不存在,这里进行兜底
// 如果提示文件已存在,则认为正常
new Error(e.errMsg);
resolve();
} else {
reject(new Error(e.errMsg + '\n' + err.errMsg));
}
},
})
});
请问是否USER_DATA_PATH在window7上有兼容问题或者是有其他写法可以解决这个问题?
你好,麻烦提供出现问题的具体机型、微信版本号、系统版本号,以及能复现问题的代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html),并详细描述下复现流程。
SDKVersion: 2.19.2
version: 7.0.9
代码片段:https://developers.weixin.qq.com/s/ugiYS9mn7FuZ
已经定位问题了,我理解应该是个兼容问题
// 在window上创建会报错no such file,其他系统不会
fs.mkdir({ distPath: `${wx.env.USER_DATA_PATH}/xxx/` })
// 改成路径最后不是/结尾就不会报错了
fs.mkdir({ distPath: `${wx.env.USER_DATA_PATH}/xxx` })