3.x 引入npm包失败,无静态报错,运行undefined

TestImport.zip (2.5 MB)

新建工程,加依赖:astar-typescript

npm install astar-typescript --save

代码中测试,直接undefined,上面是demo

import { AStarFinder } from 'astar-typescript';
...
        let finder = new AStarFinder({
            grid: {},
        })
        console.log(`finder: ${finder}`)

同样的方法,2.4.x 正常使用

可以参考一下 外部模块使用案例 · Cocos Creator

很奇怪,用起来和文档不完全一样,导入声明改:

import * as astar from "astar-typescript";

使用时,按文档来说,AStarFinder 应该是 astar.AStarFinder,实际却需要用 astar.default.AStarFinder,可能中间少了一些处理?

中间插入default后,是有静态检查报错的,还要加 ts-ignore。


按文档示例

// 根据上方第三点,c 有独立导出
import { c } from './foo.js'
console.log(c); // 3

本应该能使用 import { AStarFinder } from 'astar-typescript';,因为检查库的main入口文件,声明是

exports.Grid = exports.AStarFinder = void 0;
Object.defineProperty(exports, "AStarFinder", { enumerable: true, get: function () { return astar_finder_1.AStarFinder; } });
import astar from 'atar-typescript';
const { AStarFinder } = astar;

测试了一下,这样中转,运行没问题。

但 import 语句 vscode 有问题提示:模块“".../node_modules/astar-typescript/dist/astar"”没有默认导出。 并且 vscode 识别不到 AStarFinder,表现上是点不进去定义。

能解释一下 import { AStarFinder } from 'astar-typescript'; vscode 没提示问题,识别也没问题,但运行时不能使用的原因吗?

tsconfig 里面加 "allowSyntheticDefaultImports": true


原因: 模块规范 · Cocos Creator

该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。