Ionic 2 не может найти модуль "dgram"

Я установил приложение шаблона Ionic 2 и хочу добавить пакет NPM bonjour

после установки и включения пакета в мой компонент такой:

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

приложение не будет работать с указанием "не удается найти модуль dgram"

в приложении установлены как пакет bonjour, так и типы bonjour.

проблема

приложение не может найти модуль dgram, который находится в файл @types / node. Проект запущен TS 2.4.2 и не должны нуждаться в каких-либо ссылках на @types, это должно быть подобрано автоматически.

что я пробовал

Я попытался включить папку @types в любом случае несколькими способами, установив typeroots или типы в ts.конфиг.файл json. Это ничего не меняло.

Я попытался указать типы:

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

Я попытался переустановить все модули узлов и очистка кэша

Я попытался включить ссылочный путь в мой компонент выше оператора require:

/// <reference path="node_modules/@types/node/index.d.ts" />

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

Это все не помогло. Есть идеи о том, как заставить мое приложение правильно загрузить этот модуль?

2 ответов


пакет Bonjour имеет DatagramPlugin которые требуют, что dgram действует правильно. В Ionic 2 этот пакет недоступен. Решение заключается в использовании собственного пакета Zeroconf в качестве альтернативы.


библиотека dgram входит в комплект node.js с v0.1.99 как видно здесь.

у вас всегда будет dgram, определенный, пока вы используете версию узла post v0.1.99. Ваша проблема только с типами Typescript.


убедитесь, что вы устанавливаете типы узлов с помощью npm i --save-dev @types/node и что вы включаете ES6 lib в свой tsconfig.файл json.

Если предыдущий шаг не работает, добавьте это сверху: import * as dgram from "dgram";

если ничего не работает вы можете скопировать определение модуля от здесь экспортировать его себе.


дополнительный совет: если вы не доверяете своему tsconfig.json по какой-то причине передайте lib и types аргумент непосредственно в команде tsc, такой как:tsc --lib es6 --types node -p .