uni-app 微信小程序运行本地云函数报错 Error: 未找到公共模块[fs]
uni-app 微信小程序运行本地云函数报错 Error: 未找到公共模块[fs]
操作步骤:
- 新建项目,选择uni-starter模板,然后选择本地云函数运行则报错Error: 未找到公共模块[fs]
预期结果:
- 新建项目,选择uni-starter模板,然后选择本地云函数运行正常。
实际结果:
- 新建项目,选择uni-starter模板,然后选择本地云函数运行则报错
bug描述:
- 当前hbuildX版本3.4.4.20220403-alpha,如果选择连接云端云函数,在小程序开发工具中运行uni-starter项目是正常的;选择本地云函数运行则报错Error: 未找到公共模块[fs]。
相关链接:
图片
4 回复
问题确认,下个版本修复,已加分,感谢您的反馈!
此问题内部已修复,3.4.5-alpha发版后请更新。
HX 3.4.5+ 版本已修复,请升级
在 uni-app 开发微信小程序时,如果你尝试运行本地云函数并遇到 Error: 未找到公共模块[fs]
的错误,这通常是因为微信小程序的环境不支持 Node.js 的核心模块(如 fs
、path
等)。
微信小程序的云函数运行环境是基于 Node.js 的,但它是经过裁剪的,并不支持所有的 Node.js 核心模块。具体来说,fs
模块(文件系统模块)在微信小程序的云函数环境中是不可用的,因为它涉及到文件系统的操作,而这在微信小程序的安全模型中是不允许的。
解决方法
-
避免使用
fs
模块:- 如果你在云函数中使用了
fs
模块,尝试找到替代方案。例如,如果你需要读取或写入文件,考虑使用云存储或其他服务。
- 如果你在云函数中使用了
-
使用微信小程序提供的 API:
- 微信小程序提供了一些替代的 API 来处理文件和数据存储。例如,
wx.cloud.uploadFile
和wx.cloud.downloadFile
可以用来处理文件上传和下载。
- 微信小程序提供了一些替代的 API 来处理文件和数据存储。例如,
-
检查依赖:
- 如果你使用的第三方库依赖于
fs
模块,可能需要找到不依赖fs
的替代库,或者修改代码以适应微信小程序的环境。
- 如果你使用的第三方库依赖于
-
使用云开发环境:
- 如果你需要在云函数中处理文件,可以使用微信云开发的云存储功能,而不是直接在云函数中使用
fs
模块。
- 如果你需要在云函数中处理文件,可以使用微信云开发的云存储功能,而不是直接在云函数中使用
示例
假设你原本的云函数代码如下:
const fs = require('fs');
exports.main = async (event, context) => {
const data = fs.readFileSync('path/to/file', 'utf8');
return {
data: data
};
};
你可以将其修改为使用云存储的 API:
const cloud = require('wx-server-sdk');
cloud.init();
exports.main = async (event, context) => {
const fileID = 'cloud://your-env-id.xxx/your-file-path'; // 云存储中的文件 ID
const res = await cloud.downloadFile({
fileID: fileID
});
const buffer = res.fileContent;
const data = buffer.toString('utf8');
return {
data: data
};
};