网站搜索

node.js - 引入包含 index.js 的文件夹


我正在尝试通过指定文件夹名称来引入一个包含 index.js 的文件夹

import xyz = require("./xyz");

并且会得到一个编译错误“无法解析外部模块 xyz。模块不能别名为非模块类型。”

如果我指定索引

import xyz = require("./xyz/index");

它有效。

如果我做

var xyz = require("./xyz");

它可以工作,但我在 xyz 上没有智能感知。

那个特性在 Typescript 中不被支持吗?

答案#1

不,TypeScript 不遵循 Node.js 的模块解析规则,因为这些规则相当特定于该平台。TypeScript 支持多个不遵循 Node.js 约定的平台。

TypeScript 规范关于相对模块解析指出:

如果导入声明指定了相对外部模块名称,则名称相对于引用模块的文件路径所在的目录进行解析。程序必须包含具有所得文件路径的模块,否则会发生错误。例如,在文件路径为 ‘C:/src/ui/main’ 的模块中,外部模块名称 ‘./editor’ 和 ‘../lib/io’ 分别引用文件路径为 ‘C:/src/ui/editor’ 和 ‘C:/src/lib/io’ 的模块。