Ionic 2找不到模块'dgram'

时间:2017-08-01 23:43:42

标签: node.js ionic2 bonjour

我已经安装了模板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();

这一切都没有帮助。有关如何使我的应用程序正确加载此模块的任何想法?

2 个答案:

答案 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命令中传递libtypes参数,例如:{ {1}}