我正在尝试让节点子路径导入和typescript工作。我的IDE在解析导入时没有问题,但Typescript从来都不开心。
Github回购协议代码:https://github.com/doronrosenberg/ts-subpath-imports。
package.json:
"imports": {
"#internal/*": "./internal/*.ts",
"#internal2": "./internal"
}
tsconfig.json:
"paths": {
"#internal/*": "./internal/*.ts",
"#internal2": ["./internal"]
}
和代码:
import { foo } from "#internal/index";
import { bar } from "#internal2";
无论我如何设置,我总是得到:
src/test.ts:1:21 - error TS2307: Cannot find module '#internal/index' or its corresponding type declarations.
1 import { foo } from "#internal/index";
~~~~~~~~~~~~~~~~~
src/test.ts:2:21 - error TS2307: Cannot find module '#internal2' or its corresponding type declarations.
2 import { bar } from "#internal2";
~~~~~~~~~~~~
有什么想法吗?
2条答案
按热度按时间oyt4ldly1#
在用Typescript破解了几个星期之后,我得到了一个可行的解决方案。
假设我有一个名为
@kodadot1/metasquid
的包,其中包含多个子模块(consolidator
和entity
)。在我的
package.json
中我声明imports
诀窍是为项目根目录中的每个子模块创建一个
.d.ts
文件。因此,对于子模块
entity
,我将创建一个名为entity.d.ts
的文件,其中包含现在,要在npmjs中正确发布它,请扩展您的
package.json
,如下所示:现在只需发布,您就可以享受子路径导入:
Whole code is available here
42fyovps2#
子路径导出的支持需要较新的模块分辨率,如
Node16
和NodeNext
: