node.js - 在 Angular 5 中,如何导入没有 @types 的 NPM 模块

标签 node.js angular typescript npm

我正在尝试 Angular 5,从 angular-cli 开始一个项目。在这个项目中,我想使用一个 NPM 模块:J2M ( https://github.com/kylefarris/J2M ),所以我上网看了看这两个命令:

npm install j2m --save
npm install @types/j2m --save-dev

不幸的是,@types/j2m 根本不存在。 所以我试图找到一种方法来定义我自己的类型,但没有成功......

我正在使用这段代码:

import * as J2M from "j2m";
...
console.log(J2M.toM(value));

但根据我在网上找到的示例,要么“j2m”无法识别,要么“toM”不是函数...

那么,导入这个模块的正确方法是什么?

谢谢,

最佳答案

您需要将脚本添加到您的 angular-cli.json 文件中。

scripts属性下,添加

'../node_modules/path/to/minified/js.js'

如果需要样式,您还必须在同一文件中的 styles 属性下添加它。

完成后,您的库已导入。这意味着您不需要使用诸如

import * from 'j2m';

但是如果你想在你的IDE不抛出错误的情况下使用一个全局变量,那么你应该添加

declare var J2M: any;

J2M 是从您的库中导出的全局函数(例如,对于 MomentJS,此变量称为 moment)。

当你使用定义文件时,它只是告诉 CLI 自动获取 JS 库,并为你提供 IDE 自动完成。使用此解决方案,您没有自动完成,并且您明确告诉 CLI 从何处获取库。

关于node.js - 在 Angular 5 中,如何导入没有 @types 的 NPM 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48761882/

相关文章:

javascript - backbone.js 的基本目的和好处是什么?

javascript - 如何从discord API获取头像?

node.js - "path"参数必须是字符串类型。接收类型对象nodejs谷歌云存储对象上传

angular - 如何在从 col-12 更改为 col-9 时向 css 中的 div 添加过渡效果?

html - 如何在 PrimeNG 中自定义下拉滚动条

angular - 如何获取新项目ngrx的id

javascript - Web Worker onMessage 在 IE11 中为 null

node.js - 在 IISNode 中设置多个环境变量

javascript - 您将如何在 typescript 中定义一个既是对象又是函数的类型?

typescript - TypeScript : No type error when passing an array with object literals as a reference/variable