Fehler [ERR_MODULE_NOT_FOUND]: Modul kann nicht gefunden werden

Lesezeit: 3 Minuten

Benutzeravatar von user1592380
Benutzer1592380

Geben Sie hier eine Bildbeschreibung ein

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.

    – Jared Smith

    21. Dezember 2020 um 15:43 Uhr


Wenn Sie ECMAScript-Module verwenden, müssen Sie die Dateierweiterung angeben: https://nodejs.org/api/esm.html#esm_mandatory_file_extensions

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

Odilis Benutzeravatar
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

$ node index.js

Sie machen:

$ node --experimental-specifier-resolution=node index.js

Sie können auch ein Skript in Ihrer package.json erstellen

etwa so:

     "scripts": {
  "start": "NODE_OPTIONS='--experimental-specifier-resolution=node' node src/index.js

Versuchen Sie es wie folgt

Suche in deinem "/home/optionhomes11/nodeprojects/hayes/index.js"

Und auf der Suche nach "/home/optionhomes11/nodeprojects/hayes/helpers"

ändern

"/home/optionhomes11/nodeprojects/hayes/helpers"

Zu

"/home/optionhomes11/nodeprojects/hayes/helpers.js"

Benutzeravatar von rav2040
rav2040

Sie sollten aus importieren './helpers'nicht '.helpers'.

Benutzeravatar von Francis Ade
Francis Ade

//helpers.js

export default urls;

//index.js

import urls from './helpers.js';

//package.json (unter Name)

"type": "module"

1453480cookie-checkFehler [ERR_MODULE_NOT_FOUND]: Modul kann nicht gefunden werden

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy