在Node.js中使用Tau-Prolog遇TypeError错误,求解决方法
解决Tau-Prolog运行示例时出现的
TypeError: Cannot read property 'type' of undefined问题 我看到你在运行Tau-Prolog的示例命令nodejs ./sample.js bread时遇到了这个类型错误,报错核心是pl.type未定义。结合你提供的环境信息(Node.js v8.10.0,Ubuntu 18.04),这个问题大概率是旧版本Node.js对Tau-Prolog依赖的JavaScript特性支持不完善导致的。
已验证的解决方案
根据你补充的信息,将Node.js升级到系统最新稳定版本后问题消失,这是最直接有效的解决办法。你可以通过以下步骤完成升级(以Ubuntu系统为例):
- 先移除旧版本Node.js:
sudo apt remove nodejs - 添加NodeSource官方源(以最新LTS版本为例):
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash - - 安装最新版本:
sudo apt install nodejs - 验证版本:
node --version
问题细节回顾
你运行命令时的完整报错信息:
/home/stefan/Desktop/tau-prolog/tau-prolog.js:6117 pl.type.is_dom_object = function( obj ) { ^ TypeError: Cannot read property 'type' of undefined at /home/stefan/Desktop/tau-prolog/tau-prolog.js:6117:5 at Object. (/home/stefan/Desktop/tau-prolog/tau-prolog.js:6382:3) at Module._compile (module.js:652:30) at Object.Module._extensions..js (module.js:663:10) at Module.load (module.js:565:32) at tryModuleLoad (module.js:505:12) at Function.Module._load (module.js:497:3) at Module.require (module.js:596:17) at require (internal/module.js:11:18) at Object. (/home/stefan/Desktop/tau-prolog/sample.js:2:10)
你的环境配置:
- 工作目录:
/home/stefan/Desktop/tau-prolog - 目录文件:
core.js js.js lists.js sample.js tau-prolog.js dom.js license.txt random.js statistics.js - 系统版本:Linux stefan-TravelMate-B117-M 4.15.0-43-generic #46-Ubuntu SMP Thu Dec 6 14:45:28 UTC 2018 x86_64
- Node.js版本:v8.10.0
补充说明
Node.js v8.10.0是比较老旧的版本(发布于2018年),对ES6+的部分特性支持存在局限性,而Tau-Prolog的最新版本可能依赖了这些新特性,导致模块初始化时pl对象未能正确创建,进而出现pl.type未定义的错误。升级到新版本Node.js后,这些特性支持完善,问题自然解决。
内容的提问来源于stack exchange,提问作者repeat
相关产品推荐
相关产品推荐

