离子2无法find模块'dgram'

我已经安装了一个模板Ionic 2应用程序,并希望添加NPM包bonjour

在安装并在我的组件中包括这样的包:

 var Bonjour = require('bonjour'); var bonjour = new Bonjour(); 

该应用程序不会运行说明'无法find模块dgram'

该应用程序已经安装了bonjour包和bonjourtypes。

问题

应用程序无法find位于@ types / node文件中的模块dgram。 该项目正在运行TS 2.4.2 ,不应该需要任何对@types的引用,这应该被自动拾取。

我试过了什么

我试着用多种方式试图包含@types文件夹,方法是在ts.config.json文件中设置typeroot或type。 这并没有改变任何东西。

我试过指定types:

 "types": ["node", "bonjour"] 

我试着重新安装所有节点模块并清除caching

我试着在require语句上面的组件中包含一个引用path:

 /// <reference path="node_modules/@types/node/index.d.ts" /> var Bonjour = require('bonjour'); var bonjour = new Bonjour(); 

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

包Bonjour有一个DatagramPlugin需要dgram正常工作。 在离子2这个包是不可用的。 解决scheme是使用Native Zeroconf软件包作为替代scheme。

自从v0.1.99开始,dgram库就包含在node.js中了 。

只要您使用v0.1.99版本的节点版本,就会一直定义dgram。 您的问题只与Typescripttypes。


确保使用npm i --save-dev @types/node安装节点types,并且在tsconfig.json文件中包含es6 lib。

如果上一步不起作用,请在顶部添加以下内容: import * as dgram from "dgram";

如果没有任何工作,你可以从这里复制模块定义自己导出。


额外提示:如果因为某种原因不信任tsconfig.json ,直接在tsc命令中传递libtypes参数,如: tsc --lib es6 --types node -p .

Interesting Posts