我已经安装了模板Ionic 2应用程序,并希望添加NPM包bonjour
在我的组件中安装并包含这样的包之后:
var Bonjour = require('bonjour');
var bonjour = new Bonjour();
应用程序不会运行说明'找不到模块dgram'
该应用程序同时安装了bonjour包和bonjour类型。
问题
应用程序找不到位于@ types / node文件中的模块dgram。该项目正在运行 TS 2.4.2 ,并且不需要任何对@types的引用,这应该自动获取。
我尝试了什么
我尝试以多种方式包含@types文件夹,方法是在ts.config.json文件中设置typeroots或types。这并没有改变任何事情。
我尝试指定类型:
"types": ["node", "bonjour"]
我尝试重新安装所有节点模块并清除缓存
我尝试在require语句上面的组件中包含一个引用路径:
/// <reference path="node_modules/@types/node/index.d.ts" />
var Bonjour = require('bonjour');
var bonjour = new Bonjour();
这一切都没有帮助。有关如何使我的应用程序正确加载此模块的任何想法?
答案 0 :(得分:7)
Bonjour软件包有一个DatagramPlugin,它需要dgram才能正常运行。在Ionic 2中,此套餐不可用。解决方案是使用Native Zeroconf软件包作为替代方案。
答案 1 :(得分:1)
dgram库包含在node.js中,从v0.1.99开始,如here所示。
只要您使用v0.1.99之后的节点版本,就会始终定义dgram。您的问题仅适用于Typescript类型。
确保使用npm i --save-dev @types/node
安装节点类型,并在tsconfig.json文件中包含es6 lib。
如果上一步无效,请将其添加到顶部:import * as dgram from "dgram";
如果无效,您可以从here复制模块定义,然后自行导出。
额外提示:如果由于某种原因您不相信tsconfig.json
,请直接在tsc命令中传递lib
和types
参数,例如:{ {1}}