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

在PathFinding.js仓库中自定义添加IDDFS寻路器后出现构造函数类型错误的求助

在PathFinding.js仓库中自定义添加IDDFS寻路器后出现构造函数类型错误的求助

看起来你已经为PathFinding.js添加IDDFS寻路器做了不少准备工作,但遇到了构造函数找不到的报错,我来帮你排查一下可能的原因和解决办法:

你的问题核心是:在fork的PathFinding.js中新增了IDDFSFinder寻路器,完成了代码导出、UI配置逻辑的添加后,点击「Start Search」时出现Uncaught TypeError: PF.IDDFSFinder is not a constructor错误。

可能的问题点及解决步骤

1. 项目未重新构建,浏览器加载的仍是旧版本库文件

PathFinding.js的src目录是源码,通常需要通过构建工具(比如browserify、webpack)打包成浏览器可直接使用的全局PF对象。你修改了src/PathFinding.js添加了导出,但如果没有重新构建,浏览器加载的dist目录下的旧库文件里根本没有IDDFSFinder的定义。

解决办法:

  • 打开项目根目录的package.json,查看scripts字段里的构建命令,通常是类似"build": "browserify src/PathFinding.js -s PF -o dist/pathfinding.js"这样的配置。
  • 在终端执行构建命令,比如npm run build,重新生成dist目录下的库文件。
  • 确保visual/index.html中引用的是dist目录下最新构建的pathfinding.js,可以在浏览器开发者工具的Network面板中查看该文件的内容,确认是否包含IDDFSFinder的定义。

2. IDDFSFinder模块未正确导出

你提供的IDDFSFinder代码片段里,没有看到模块导出的语句。如果src/finders/IDDFSFinder.js没有正确导出构造函数,那么src/PathFinding.js中require('./finders/IDDFSFinder')拿到的就是undefined,自然无法作为构造函数使用。

解决办法:

  • 打开src/finders/IDDFSFinder.js,在文件末尾添加导出语句:
    module.exports = IDDFSFinder;
    
  • 然后重新执行项目构建命令,确保导出的构造函数被打包到全局PF对象中。

3. 拼写或大小写不一致

检查所有涉及IDDFSFinder的地方,确保拼写和大小写完全一致:

  • src/PathFinding.js中的导出键名'IDDFSFinder'
  • 你的寻路器文件名IDDFSFinder.js
  • panel.js中的new PF.IDDFSFinder
  • UI代码中的iddfs_header、iddfs_section等标识

如果有任何一处拼写错误(比如写成IDDFSfinder或IddfsFinder),都会导致构造函数无法被正确识别。

4. 额外的UI代码小问题(非当前错误原因,但后续需修正)

你的panel.js中选择器写法有问题:

allowDiagonal = typeof $('#iddfs_section ' + '.allow_diagonal:checked').val() !== 'undefined';

这里的字符串拼接会生成#iddfs_section .allow_diagonal:checked(两个空格),虽然可能不影响选择,但更规范的写法是:

allowDiagonal = $('#iddfs_section .allow_diagonal').is(':checked');
biDirectional = $('#iddfs_section .bi-directional').is(':checked');
dontCrossCorners = $('#iddfs_section .dont_cross_corners').is(':checked');

用.is(':checked')来判断复选框状态会更准确简洁。

排查顺序建议

先检查IDDFSFinder.js的导出语句,再重新构建项目,最后验证构建后的库文件是否包含IDDFSFinder,这三个步骤解决构造函数找不到问题的概率最高。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.07 11:24:37