Je construis une application expressjs par ES6 et j'ai eu l'erreur ci-dessous:
(node:4132) ExperimentalWarning: The ESM module loader is experimental.
internal/modules/run_main.js:54
internalBinding('errors').triggerUncaughtException(
^
Error [ERR_MODULE_NOT_FOUND]: Cannot find module 'E:\wamp64\www\myDemos\nodeJs\expressJsExample\config\app' imported from E:\wamp64\www\myDemos\nodeJs\expressJsExample\server.mjs
←[90m at finalizeResolution (internal/modules/esm/resolve.js:255:11)←[39m
←[90m at moduleResolve (internal/modules/esm/resolve.js:603:10)←[39m
←[90m at Loader.defaultResolve [as _resolve] (internal/modules/esm/resolve.js:644:13)←[39m
←[90m at Loader.resolve (internal/modules/esm/loader.js:94:40)←[39m
←[90m at Loader.getModuleJob (internal/modules/esm/loader.js:240:28)←[39m
←[90m at ModuleWrap.<anonymous> (internal/modules/esm/module_job.js:42:40)←[39m
←[90m at link (internal/modules/esm/module_job.js:41:36)←[39m {
code: ←[32m'ERR_MODULE_NOT_FOUND'←[39m
}
[nodemon] app crashed - waiting for file changes before starting...
Si j'utilise import app from './config/app.js';
puis travailler mais si j'utilise import app from './config/app';
Puis renvoyez l'erreur ci-dessus.
Le ci-dessous est mon code:
paquet.json
{
"name": "ExpressJsExample",
"version": "1.0.0",
"description": "Express Js Example",
"main": "server.js",
"type": "module",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "nodemon server.js"
},
"author": "Mukesh Singh Thakur",
"license": "ISC",
"dependencies": {
"body-parser": "^1.19.0",
"chalk": "^4.0.0",
"dotenv": "^8.2.0",
"express": "^4.17.1",
"http": "0.0.1-security",
"http-errors": "^1.7.3",
"jsonwebtoken": "^8.5.1",
"nodemon": "^2.0.2",
"pg": "^8.0.0",
"request": "^2.88.2",
"sequelize": "^5.21.6"
},
"devDependencies": {
"sequelize-cli": "^5.5.1"
}
}
serveur.js
import http from 'http';
import app from './config/app';
const server = http.Server(app);
server.listen(3000, () => {
return true;
});
app.js
import express from 'express';
const app = express();
export default app;
L'exemple d'application est disponible en https://github.com/msthakur08/express-js-example
URL. L'exemple de fichiers importation avec '.js' existence mais je veux importer un fichier sans existence ".js".
J'ai résolu cela avec cette approche: -
Lorsque vous utilisez la fonctionnalité ES6 Importation/Exportation avec noeud, vous devez importer des modules avec ".mjs" extension
Et avant d'importer renommer votre module ./path-to/app.js to ./path-to/app.mjs
et changez votre code à ceci
import http from 'http';
import app from './config/app.mjs'; //.mjs extension is necessary
const server = http.Server(app);
server.listen(3000, () => {
return true;
});
et exécutez votre app.js avec node --experimental-modules app.js
plus sur ceci https://nodejs.org/api/esm.html