Fehler [ERR_MODULE_NOT_FOUND]: Modul kann nicht gefunden werden
Lesezeit: 3 Minuten
Benutzer1592380
Ich arbeite an einem Knotenprojekt (Screenshot). Ich habe eine einzelne Funktion (URLs) in helpers.js, die ich unten exportiere als:
module.exports = {
urls: urls,
};
In meiner index.js versuche ich es zu importieren mit:
import { urls } from './helpers';
const myUrls = urls(1,3);
Wenn ich es ausführe, bekomme ich
Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/home/optionhomes11/nodeprojects/hayes/helpers' imported from /home/optionhomes11/nodeprojects/hayes/index.js Did you mean to import ../helpers.js?
Was mache ich falsch?
Sie mischen das CJS-Modulsystem des Knotens (require/module.exports) mit ES6-Modulen (Import/Export). Tun Sie das nicht, es sei denn, Sie sind sich ganz sicher, dass Sie wissen, was Sie tun. Es gibt sowohl subtile als auch grobe Fallstricke.
Also, zusätzlich zu dem, was andere zur Verwendung vorgeschlagen haben "type": "module" Auf package.json müssen Sie auch die Dateierweiterung angeben import {urls} from './helpers.js'. Sie können auch die Flagge verwenden --es-module-specifier-resolution=node damit es js-Dateien wie zuvor als Module auflöst require
Diese Antwort hat mir geholfen! Ich habe Import verwendet und die Datei war .js – Das Hinzufügen von –es-module-specifier-resolution=node hat mir den Tag gerettet! Danke!
– Letie
10. Dezember 2021 um 11:24
Wow wirklich? Ich bin froh, dass ich auf diese Antwort gestoßen bin, bevor ich viel Zeit damit verbracht habe. Danke Danielo515.
– Cody
3. Februar 2022 um 21:44
Das hat bei mir einfach funktioniert und meine TS-exportierten Dateien als JS bezeichnet, wo sie importiert wurden. Je mehr ich über JavaScript/TypeScript/Node lerne, desto mehr wird mir klar, dass ich nichts weiß … das scheint keinen Sinn zu ergeben.
– Große Reiche
11. April 2022 um 4:55
Ich kann nicht glauben, dass es das war, es hat mein Problem gelöst.
– Lautaro Jorge Garcia
26. Juli 2022 um 2:26
Wie gehen Sie damit in .ts-Dateien um, beispielsweise beim Transpilieren einer index.ts? Im Idealfall könnte es alle „.ts“-Importe in „.js“ umschreiben? Ich bin überrascht, dass eine Bibliothek wie beispielsweise „react-bootstrap“ die Erweiterung anscheinend nicht in ihrem ESM-Index verwendet (Sie können sie in einem Projekt installieren und im dist-Ordner überprüfen, um zu sehen, was passiert).
– Eric Burel
28. September 2022 um 14:04 Uhr
Dies liegt daran, dass wir bei der Verwendung von ES-Modulen gezwungen sind, die Dateierweiterung in der Importanweisung anzugeben
import * from "./demo.js" // Works fine import * from "./demo" // Will throw error as you see
Beachten Sie Folgendes: Die beiden oben genannten Optionen sind beide gültig, wenn stattdessen commonJs verwendet werden
Ich denke, das war die Lösung für mich – danke!
– ptrcao
29. Januar um 2:26
Sie haben verwendet
"type":"module"
Dann stellen Sie sicher, dass Sie es haben import Datei muss sein .js Verlängerung
Odili
Du machst nichts falsch. Der aktuelle Auflösungsalgorithmus für EcmaScript-Module von Dateierweiterungen und die Möglichkeit, Verzeichnisse mit einer Indexdatei zu importieren, erfordert die Verwendung eines experimentellen Flags. sehen esmder untere Teil.
So machen Sie Ihre Arbeit so, wie sie ist, anstatt
Sie mischen das CJS-Modulsystem des Knotens (require/module.exports) mit ES6-Modulen (Import/Export). Tun Sie das nicht, es sei denn, Sie sind sich ganz sicher, dass Sie wissen, was Sie tun. Es gibt sowohl subtile als auch grobe Fallstricke.
– Jared Smith
21. Dezember 2020 um 15:43 Uhr