2017-08-01 4 views
13

J'ai installé un modèle d'application ionique 2 et que vous voulez ajouter le package NPM bonjourionique 2 ne peut pas trouver le module « dgram »

Après avoir installé et y compris le paquet dans mon élément comme celui-ci:

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

L'application ne s'exécutera pas en indiquant 'ne peut pas trouver le module dgram'

L'application a installé à la fois le paquet bonjour et le type bonjour.

Le problème

L'application ne peut pas trouver le module dgram qui est situé dans les types de @/fichier nœud. Le projet exécute TS 2.4.2 et ne devrait pas avoir besoin de références aux @types, cela devrait être détecté automatiquement.

Qu'ai-je essayé

J'ai essayé, y compris le dossier @types de toute façon de plusieurs façons, en mettant en typeroots ou types dans le fichier ts.config.json. Cela n'a rien changé.

J'ai essayé types spécifiant:

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

J'essayé de réinstaller tous les modules de noeuds et de vider le cache

J'ai essayé, y compris un chemin de référence dans mon élément au-dessus du require:

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

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

Tout cela n'a pas aidé. Des idées sur la façon de rendre mon application charger ce module correctement?

+0

J'ai le même problème sur [email protected] –

+1

@JackD Voir la réponse ci-dessous – WJM

+0

avez-vous vérifié votre chemin d'importation? Souvent, le cas est avec le chemin. –

Répondre

7

Le paquet Bonjour a une DatagramPlugin qui nécessitent dgram pour fonctionner correctement. Dans Ionic 2, ce package n'est pas disponible.La solution consiste à utiliser le package Native Zeroconf comme alternative.

+0

Merci, j'avais déjà trouvé ça! Je ne peux pas encore faire fonctionner Zeroconf (cela ne déclenche jamais la surveillance d'un hôte mDns) mais c'est une autre histoire :) –

1

La bibliothèque dgram est incluse avec node.js depuis la v0.1.99 comme vu here.

Vous aurez toujours défini dgram tant que vous utilisez une version de noeud post v0.1.99. Votre problème concerne uniquement les types de types de caractères.


Assurez-vous que vous installez les types de noeuds avec npm i --save-dev @types/node et que vous incluez le ES6 lib dans votre fichier tsconfig.json.

Si l'étape précédente ne fonctionne pas ajouter ceci sur le dessus: import * as dgram from "dgram";

Si rien ne fonctionne vous pouvez copier la définition du module de here export vous-même.


Astuce supplémentaire: Si vous ne faites pas confiance à votre tsconfig.json pour une raison quelconque passer l'argument lib et types directement dans la commande tsc tels que: tsc --lib es6 --types node -p .

+0

J'ai essayé toutes vos solutions mais aucune d'elles n'a aidé. J'ai aussi essayé de changer le fichier de configuration du webpack Ionic mais le problème persiste – WJM

+0

Cela doit être un problème dans votre environnement. –

+0

Oui, Ionic ne semble pas utiliser dgram dans le code du navigateur – WJM