2016-06-10 10 views
0

Ich versuche, dieses Modul in eine Ember.js (Version 2.5) App zu importieren:Import 3rd-Party-Modul in Ember

https://github.com/hapijs/nes/blob/master/lib/client.js

Dies ist, wie ich es tue (im Anschluss an die docs):

app.import('bower_components/nes/lib/client.js', { exports: { 'nes': ['default', 'client'] } }); 

Und die Einfuhranmeldung:

import client from 'nes'; 
Nun

Ich erhalte den Fehler unten:

loader.js:201 Uncaught Error: Could not find module nes imported from myapp.com/components/chart-widget

nehme ich die Import-Anweisung ist richtig und das eigentliche Modul nicht exportiert selbst nicht in einer Art und Weise Ember sie verbrauchen kann. Wie kann ich das beheben? Gibt es eine Möglichkeit, einen Wrapper für Bibliotheken von Drittanbietern wie diesen zu schreiben?

+0

Können Sie die Zeile aus 'component/chart-widget' einfügen, wo Sie Ihr Modul tatsächlich importieren? –

+0

Bitte lesen Sie die aktualisierte Frage. Ich habe auch versucht, Import von {nes} importieren und importieren von 'nes', aber nicht wirklich funktioniert ... –

Antwort

2

TL: DR Ihr Modul ist als globale Variable mit nes.Client erreichbar.

Sie suchen den falschen Abschnitt in der Anleitung. hapijs/nes ist kein Standard-AMD-Asset und kann daher nicht direkt mit dem Schlüsselwort import importiert werden. Dies bedeutet, dass Ihre Bibliothek im globalen Kontext zu finden ist.

Debugging durch bower_components/nes/lib/client.js wird Ihnen zeigen, dass der Code in diesem Fall erfolgt eine Verzweigung: https://github.com/hapijs/nes/blob/master/lib/client.js#L24

Sie einfach Ihre Dritte Modul über eine globale Variable kann nes.Client Namen zugreifen.

Wenn Sie mit dem Schlüsselwort ES6 import für mehr Übersichtlichkeit darauf zugreifen möchten, können Sie ein Hersteller-Shim wie im Handbuch beschrieben erstellen: https://ember-cli.com/user-guide/#managing-dependencies.

Beachten Sie, dass dies nes nicht aus dem globalen Kontext entfernt und Sie nur mit dem Schlüsselwort import importieren können.