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/

相关文章:

node.js - 我应该将用户信息放入 JWT token 中,还是只放入用户 ID,然后从数据库中选择信息?

CSS 问题 Ngx 表 angular2 泳道

javascript - Angular 6 : date disapear on refresh

typescript - createClient 返回的类型是什么?

javascript - 是否值得在 CMS 中使用 TypeScript?

javascript - JSON响应上的重复 block

node.js - 列出文件时,node.js 出现类型错误

arrays - 根据对象属性查询 Mongoose 文档

javascript - 在 Angular Component 类中调用自定义 jQuery 函数

javascript - TypeScript - 自定义类元素的 Array.map