Muk*_*kur 15 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_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...
Run Code Online (Sandbox Code Playgroud)
如果我使用import app from './config/app.js';然后工作但如果我使用import app from './config/app';然后返回上述错误。
下面是我的代码:
包.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"
}
}
Run Code Online (Sandbox Code Playgroud)
服务器.js
import http from 'http';
import app from './config/app';
const server = http.Server(app);
server.listen(3000, () => {
return true;
});
Run Code Online (Sandbox Code Playgroud)
应用程序.js
import express from 'express';
const app = express();
export default app;
Run Code Online (Sandbox Code Playgroud)
示例应用程序在https://github.com/msthakur08/express-js-exampleURL 中可用。示例文件导入时存在“.js”,但我想导入不存在“.js”的文件。
sha*_*ngi 52
如果有人仍在搜索,我使用节点版本 15 遇到此错误,我导入的文件没有.js文件扩展名,添加这解决了我的问题。
小智 20
您可以将其添加到您的包 json 中
"scripts": {
"start": "nodemon --experimental-modules --es-module-specifier-resolution=node index.js"
},
Run Code Online (Sandbox Code Playgroud)
Abd*_*afi 14
您可以通过以下方式解决此问题:
将节点添加--es-module-specifier-resolution=node到您的节点命令中。
完整命令: node --experimental-modules --es-module-specifier-resolution=node app.js
我用这种方法解决了这个问题:-
当您在 Node 中使用 Es6 导入/导出功能时,您需要在".mjs" extension导入重命名模块之前 导入模块./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;
});
Run Code Online (Sandbox Code Playgroud)
并运行你的 app.jsnode --experimental-modules app.js
有关此的更多信息https://nodejs.org/api/esm.html
示例import 'express'解析为./node_modules/express/index.js.
在您的情况下,创建一个名为app的文件夹,其中包含一个 index.js 。之后,您可以使用此行导入或要求它:
import app from './app/'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20993 次 |
| 最近记录: |