Node.js ExpressJs返回错误'ERR\u MODULE\u NOT\u FOUND',如果我导入的文件没有'js'扩展名
我使用ES6构建了一个expressJs应用程序,但出现以下错误:Node.js ExpressJs返回错误'ERR\u MODULE\u NOT\u FOUND',如果我导入的文件没有'js'扩展名,node.js,express,ecmascript-6,es6-modules,Node.js,Express,Ecmascript 6,Es6 Modules,我使用ES6构建了一个expressJs应用程序,但出现以下错误: (node:4132) ExperimentalWarning: The ESM module loader is experimental. internal/modules/run_main.js:54 internalBinding('errors').triggerUncaughtException( ^ Error [ERR_MODULE_NOT_F
(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...
server.js
import http from 'http';
import app from './config/app';
const server = http.Server(app);
server.listen(3000, () => {
return true;
});
import express from 'express';
const app = express();
export default app;
app.js
import http from 'http';
import app from './config/app';
const server = http.Server(app);
server.listen(3000, () => {
return true;
});
import express from 'express';
const app = express();
export default app;
示例应用程序在
https://github.com/msthakur08/express-js-example
URL。示例文件导入时带有“.js”存在,但我希望导入不带“.js”存在的文件。例如导入“express”
解析为/node\u modules/express/index.js
在您的情况下,创建一个名为app的文件夹,其中包含index.js。之后,您可以使用以下行导入或要求它:
import app from './app/'
我用这种方法解决了这个问题:- 当您在节点上使用Es6导入/导出功能时,需要导入扩展名为“.mjs”的模块,然后在导入之前将模块重命名为“
”/path to/app.js to./path to/app.mjs
把你的代码改成这个
import http from 'http';
import app from './config/app.mjs'; //.mjs extension is necessary
const server = http.Server(app);
server.listen(3000, () => {
return true;
});
并使用节点运行app.js——实验模块app.js
有关此问题的更多信息,您可以通过以下方式解决此问题: 将node
--es模块说明符resolution=node
添加到node命令中
完整命令:
node--experimentalmodules--es module specifier resolution=node app.js
我遇到了同样的问题,当我从package.json中删除类型:“module”
时问题得到了解决。您可以将其添加到您的包json中
“脚本”:{
“开始”:“nodemon--实验模块--es模块说明符解析=节点索引.js”
},
如果有人仍在搜索,我在使用节点版本15时出现此错误,我在导入文件时没有添加.js
文件扩展名,从而修复了我的问题。我在使用ES6。嘿,我添加了此项,但没有任何帮助。错误是什么?请确保使用适当的入口点名称(节点:4132)实验警告:ESM模块加载程序是实验性的。内部/modules/run_main.js:54 internalBinding('errors').triggerUncaughtException(^Error[errr_MODULE\u NOT\u FOUND]:找不到模块选中此项,