例如,
yarn add http-status-codes如果我从该包中导入某些内容,如
import { BAD_GATEWAY } from 'http-status-codes';打字本抱怨“找不到模块http-状态代码”。但是http-status代码已经发布了自己的index.d.ts类型定义文件。
由于某些原因,这种行为是,只能使用"es6“:”es6“或高于(由于某种原因"es5"没有问题)进行复制。
为什么我不能使用可用的打字文件?这难道不是现代包应该像开箱即用的方式,也就是,而不是,需要额外的yarn add @types/http-status-codes吗?(反正也不存在)。如何从包含其类型定义的包中导入?为什么这不是默认的呢?
发布于 2018-07-16 07:18:35
如果指定es6,则该模块系统将默认为该版本的ES ( ES2015模块系统)的本机模块系统。来自文档:
有两种可能的模块解析策略:节点和经典。您可以使用--模块解析标志来指定模块解析策略。如果未指定,则默认为-模块AMD \ ES2015或Node否则。
您可以阅读文档以获得更多信息,但clasic解析策略不使用node_modules查找定义,而node则模仿查找模块的节点方式(在node_modules中查找定义)。
您需要在tsconfig.json中添加moduleResolution选项:
{
"compilerOptions": {
"moduleResolution": "node",
"target": "es6",
}
}这适用于es5,因为对于es5,模块系统默认为"CommonJS" (见文档),默认情况下使用节点解析。
https://stackoverflow.com/questions/51356195
复制相似问题