Electron: Probleme beim Laden von Javascript-Dateien mit requireJS

Erstellt am 26. Mai 2014  ·  3Kommentare  ·  Quelle: electron/electron

Ich arbeite seit Monaten an einem Projekt und möchte Atom verwenden, um die App einzubetten. Das Projekt verwendet requireJS und ich bin nie auf Probleme beim Laden von Skripten in der Webversion oder sogar auf dem Node-Webkit-Build gestoßen, aber mit Atom werden Skripts nicht richtig geladen.

Ich habe ein kleines Beispiel gemacht, um das Problem zu veranschaulichen. Es ist ein Mac-Build.
https://github.com/cniaulin/loading-issue

Klonen Sie das Repo, starten Sie Atom.app. Schauen Sie, ob Moment definiert ist, wenn ja, cmd + r, Sie werden sehen, dass dies nicht immer der Fall ist.
Sie können die Konsole mit cmd + alt + i anzeigen
Dateien befinden sich hier: Atom.app/Contents/Resources/app/

Hat jemand eine Lösung oder einen Workaround?

Hilfreichster Kommentar

@cniaulin Eine Problemumgehung wäre, die Variable require freizugeben, indem Sie sie in etwas anderes umbenennen, bevor Sie require.js wie folgt laden:

<script>
  if (window.require) {
    window.nodeRequire = window.require;
    delete window.require;
  }
</script>

Sie müssen nodeRequire überall dort aufrufen, wo Sie die Node.js-Version von require aufrufen möchten.

Alle 3 Kommentare

Hallo, alles, was ich über requireJs weiß, ist, dass sie eine ähnliche require-Methode mit einem Knoten haben, der in Konflikt gerät. Versuchen Sie, requirejs als Ersatzmethode zu verwenden.

Best Practice: Verwenden Sie npm, um Node-only-Pakete/-Module im Verzeichnis node_modules des Projekts zu installieren, aber konfigurieren Sie RequireJS nicht so, dass es in das Verzeichnis node_modules schaut. Vermeiden Sie auch die Verwendung relativer Modul-IDs, um auf Module zu verweisen, die Nur-Knoten-Module sind. Machen Sie also nicht so etwas wie require(./node_modules/foo/foo").

suchen Sie weiter nach http://requirejs.org/docs/node.html

@cniaulin Eine Problemumgehung wäre, die Variable require freizugeben, indem Sie sie in etwas anderes umbenennen, bevor Sie require.js wie folgt laden:

<script>
  if (window.require) {
    window.nodeRequire = window.require;
    delete window.require;
  }
</script>

Sie müssen nodeRequire überall dort aufrufen, wo Sie die Node.js-Version von require aufrufen möchten.

Ich schließe dies, da es keinen Plan gibt, requireJS in Atom-Shell zu unterstützen.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen