Beschreibung des Problems und Schritte zur Reproduktion:
Beim Laden von src/moment.js
mit <script type=module>
:
Das Laden des Moduls mit der Quelle „ http://localhost :5000/node_modules/moment/src/lib/utils/hooks“ ist fehlgeschlagen.
Umfeld:
Jeder Browser mit Unterstützung für ES-Module.
Das Hinzufügen der Dateierweiterung .js
zu allen Importen unter src/
kann leicht zu einer Kette von bis zu 105-228 HTTP-Anfragen führen (je nach Gebietsschema).
Ein passenderes Ergebnis könnte erzielt werden, indem die Eigenschaften esnext
und module
zu package.json
hinzugefügt werden. Aus einer Reihe von Artikeln von Axel Rauschmayer scheint es, als ob Sie etwas wie wollen würden:
"esnext": "src/moment.js",
"module": "./moment.esm.js",
(wobei ./moment.esm.js
ein neues Build-Ziel wäre, das ESM anstelle des CJS-Modulformats folgt)
+1 für ein neues esm-Build-Ziel. Als Referenz bietet Ractive.js eine .mjs-Dist-Datei
Ich werde eine PR zur Dokumentation dazu in https://github.com/moment/momentjs.com machen
Übrigens, selbst bei einer guten Anzahl von HTTP-Anfragen kann es praktisch sein, Browser-Builds für die Verwendung in Demos zu haben – wo die Demos nicht gezwungen sind, ihren HTML-Code mit globalen Skriptabhängigkeiten zu verschmutzen (ich weiß, es wäre nur ein Skript .) -Tag, wenn es einen IIFE- oder UMD-Build gibt, aber ein Skript-Tag ist immer noch fehl am Platz vom JS, das es verwendet und sauberer, um eine Modulverteilung zu haben).
@brettz9 Ich verletzen .
Hilfreichster Kommentar
Das Hinzufügen der Dateierweiterung
.js
zu allen Importen untersrc/
kann leicht zu einer Kette von bis zu 105-228 HTTP-Anfragen führen (je nach Gebietsschema).Ein passenderes Ergebnis könnte erzielt werden, indem die Eigenschaften
esnext
undmodule
zupackage.json
hinzugefügt werden. Aus einer Reihe von Artikeln von Axel Rauschmayer scheint es, als ob Sie etwas wie wollen würden:(wobei
./moment.esm.js
ein neues Build-Ziel wäre, das ESM anstelle des CJS-Modulformats folgt)