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 的核心模块(如 fspath 等)。

微信小程序的云函数运行环境是基于 Node.js 的,但它是经过裁剪的,并不支持所有的 Node.js 核心模块。具体来说,fs 模块(文件系统模块)在微信小程序的云函数环境中是不可用的,因为它涉及到文件系统的操作,而这在微信小程序的安全模型中是不允许的。

解决方法

  1. 避免使用 fs 模块

    • 如果你在云函数中使用了 fs 模块,尝试找到替代方案。例如,如果你需要读取或写入文件,考虑使用云存储或其他服务。
  2. 使用微信小程序提供的 API

    • 微信小程序提供了一些替代的 API 来处理文件和数据存储。例如,wx.cloud.uploadFilewx.cloud.downloadFile 可以用来处理文件上传和下载。
  3. 检查依赖

    • 如果你使用的第三方库依赖于 fs 模块,可能需要找到不依赖 fs 的替代库,或者修改代码以适应微信小程序的环境。
  4. 使用云开发环境

    • 如果你需要在云函数中处理文件,可以使用微信云开发的云存储功能,而不是直接在云函数中使用 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
  };
};
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!