Ответ 1
В пакете Bonjour есть DatagramPlugin, для которого требуется, чтобы dgram функционировала должным образом. В Ionic 2 этот пакет недоступен. Решение заключается в использовании пакета Native Zeroconf в качестве альтернативы.
Я установил приложение 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();
Все это не помогло. Любые идеи о том, как заставить приложение загружать этот модуль правильно?
В пакете Bonjour есть DatagramPlugin, для которого требуется, чтобы dgram функционировала должным образом. В Ionic 2 этот пакет недоступен. Решение заключается в использовании пакета Native Zeroconf в качестве альтернативы.
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 .