Подтвердить что ты не робот

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.config.json. Это ничего не меняло.

Я попробовал указать типы:

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

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

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

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

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

Все это не помогло. Любые идеи о том, как заставить приложение загружать этот модуль правильно?

4b9b3361

Ответ 1

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

Ответ 2

Библиотека

dgram включена с node.js, так как v0.1.99, как показано здесь.

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


Убедитесь, что вы устанавливаете node типы с 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 .