1

我在 Angular 6 应用程序中使用 cleave.js (^1.5.2) 以及 @types/cleave.js 包 (^1.4.0),奇怪的事情正在发生。如果我运行ng build构建应用程序,它会失败并出现以下错误:

ERROR in src/app/app.component.ts(4,8): error TS1192: Module '"C:/Users/evcomes/Angular2/hellogular/node_modules/@types/cleave.js/index"' has no default export.
src/app/app.component.ts(5,8): error TS1192: Module '"C:/Users/evcomes/Angular2/hellogular/node_modules/@types/cleave.js/options/index"' has no default export.

我在@types/cleave.js 的源代码中看到这是正确的,但它只是一个类型库,为什么我需要默认导出?真正奇怪的部分是,如果我随后修改(微不足道)一个文件然后保存,自动重建会拾取该文件(仍然显示错误,但继续),将愉快地为开发中的 Angular 应用程序和 cleave.js 功能提供服务我使用的甚至可以在我的浏览器中使用。那么这不是一个真正的错误吗?我怎样才能关闭它?

我看到的任何使用DefinitelyTyped库的教程或指南都只是说安装它们的npm应该足以在没有任何其他修改的情况下使用它们,所以我在搜索时发现的大多数问题都是人们试图制作自己的TypeScript JS 库或它们自己的模块的绑定。

在 package.json 中:

...
"@types/cleave.js": "^1.4.0",
"cleave.js": "^1.5.2"
...

在我的 tsconfig.json 中:

...
"esModuleInterop": true,
"typeRoots": [
   "node_modules/@types"
]
...

在我的 app.component.ts 中:

...
import Cleave from 'cleave.js';
import CleaveOptions from 'cleave.js/options'
...
4

1 回答 1

3

大多数获得 TS 类型的 js 库都使用...* as.... 或者要求allowSyntheticDefaultImports: truetsconfig的默认导出正常工作。

import * as CleaveOptions from 'cleave.js/options'
// AND
import Cleave from 'cleave.js'
//tsconfig.json
...
{
  allowSyntheticDefaultImports: true
}
...
于 2019-07-17T19:46:58.567 回答