You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复tau-prolog中的“tau_file_system is not defined”错误?

解决"tau_file_system is not defined"错误

问题原因

tau-prolog在浏览器环境中默认未加载文件系统相关模块,同时你的代码存在多行字符串语法错误,双重问题引发了报错。

解决步骤

  1. 更换浏览器专用导入
    将原导入语句替换为适配浏览器环境的专用包:

    import pl from "tau-prolog/browser";
    
  2. 手动加载文件系统模块
    在创建session前,显式导入file_system模块,确保consult方法能正常执行:

    pl.import("tau-prolog/modules/file_system");
    
  3. 修复多行字符串语法错误
    原代码中consult的Prolog代码用普通双引号换行会触发JS语法错误,改用模板字符串包裹:

    session.consult(`
      likes(sam, salad).
      likes(dean, pie).
      likes(sam, apples).
      likes(dean, whiskey).
    `, {
      // 回调函数逻辑
    });
    

修正后的完整代码

import { Button } from "@mui/material";
import pl from "tau-prolog/browser";

function PrologTest() {
  const onClick = () => {
    // 加载文件系统模块
    pl.import("tau-prolog/modules/file_system");
    
    const session = pl.create();
    session.consult(`
      likes(sam, salad).
      likes(dean, pie).
      likes(sam, apples).
      likes(dean, whiskey).
    `, {
      success: function () {
        console.log("规则加载成功");
      },
      error: function (err: any) {
        console.log("规则加载失败:", err);
      },
    });
    session.query("likes(sam, X).", {
      success: function (goal: any) {
        console.log("查询成功");
        // 追加获取查询结果的逻辑
        session.answer({
          success: (answer: any) => console.log("查询结果:", answer),
          error: (err: any) => console.log("获取结果失败:", err)
        });
      },
      error: function (err: any) {
        console.log("查询失败:", err);
      },
    });
  };

  return (
    <div className="container">
      <Button onClick={onClick}>测试Prolog</Button>
    </div>
  );
}

export default PrologTest;

额外说明

  • tau-prolog的Node.js版本和浏览器版本模块结构不同,浏览器环境必须使用tau-prolog/browser导入,否则会缺失适配浏览器的核心模块。
  • 即便直接传入Prolog代码字符串,consult方法内部仍依赖file_system模块的基础逻辑,因此需要显式导入该模块。

内容的提问来源于stack exchange,提问作者0xRelu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 14:25:21