1

我正在尝试将 Tau-Prolog 与 Node.js 和 React 一起使用。

在步骤:

session.consult(program);   

我收到此错误消息:

TypeError: fs.existsSync is not a function

这是重现该问题的代码:

index.js

import React from 'react';
import ReactDOM from 'react-dom';

// These alternatives makes no difference:
var pl = require('tau-prolog');
// var pl = require('./tau-prolog/modules/core.js');
// var pl = require('./tau-prolog.js');

class App extends React.Component {
    componentDidMount() {
        let program = 'fruit(apple). fruit(banana).';
        let session = pl.create();
        // Until here, it's ok. I get Session {rules: {…}, src_predicates: {…},

        // The trouble is at this step:
        session.consult(program);
        ////////
        //////// TypeError: fs.existsSync is not a function
        ////////
    }
    
    render() {
        return <div>Hello world</div>;
    }
}

ReactDOM.render(
  <App />,
  document.getElementById('root')
);

谢谢你的帮助!

4

1 回答 1

2

您不需要在服务器端使用它,除非您想在服务器端评估 prolog 程序并请求结果。

如果你只是想在前端使用它,你可以像任何其他前端库一样简单地加载它,将它添加到你的 html

<script type="text/javascript" src="tau-prolog.js"></script>
<script type="text/javascript" src="tau-prolog/core.js"></script>
<script type="text/javascript" src="tau-prolog/lists.js"></script>

然后获取包含 Prolog 代码的外部 .pl 文件,或者像在示例中或在反应中那样内联使用它。

于 2021-12-20T00:02:15.037 回答