[英]Unable to import module in nodejs using ES6 Modules
我刚刚开始学习 Node.js,我正在尝试将我的应用程序连接到 MongoDB 数据库。 这里Server.js是我的主文件,只有两行
import { connectMongoDB } from "./config/db";
connectMongoDB();
我试图从文件 db.js 导入我的函数 connectMongoDB,这是 db.js 的内容
import config from "config";
import mongoose from "mongoose";
const mongoDBUri = config.get("mongoDBUri");
export const connectMongoDB = async () => {
try {
await mongoose.connect(mongoDBUri, {
useNewUrlParser: true,
});
console.log("MongoDB connected");
} catch (error) {
console.log(
"[Error] MongoDB did not get connected due to issue " + error.message
);
process.exit(1);
}
};
我尝试使用 require 而不是 import 并且效果很好。 抛出错误 -
Error [ERR_MODULE_NOT_FOUND]: Cannot find module 'C:\Users\bisht\Project\DHH\dhh\config\db' imported from C:\Users\bisht\Project\DHH\dhh\server.js
[0] Did you mean to import ../config/db.js?
[0] at finalizeResolution (internal/modules/esm/resolve.js:259:11)
[0] at moduleResolve (internal/modules/esm/resolve.js:636:10)
[0] at Loader.defaultResolve [as _resolve] (internal/modules/esm/resolve.js:726:11)
[0] at Loader.resolve (internal/modules/esm/loader.js:97:40)
[0] at Loader.getModuleJob (internal/modules/esm/loader.js:243:28)
[0] at ModuleWrap.<anonymous> (internal/modules/esm/module_job.js:47:40)
[0] at link (internal/modules/esm/module_job.js:46:36) {
[0] code: 'ERR_MODULE_NOT_FOUND'
您是否尝试在异步上下文中运行该函数?
例如:
import { connectMongoDB } from "./config/db";
(async () => {
await connectMongoDB();
})();
module.exports
和export
有区别看看: module.exports vs. export default in Node.js 和 ES6在你的 db.js 文件中,尝试更改导出功能,如下所示:
exports.connectMongoDB = async () => {
try {
await mongoose.connect(mongoDBUri, {
useNewUrlParser: true,
});
console.log("MongoDB connected");
} catch (error) {
console.log(
"[Error] MongoDB did not get connected due to issue " + error.message
);
process.exit(1);
}
};
我浏览了 Node 的文档,发现当我们使用 ES6 导入模块时,我们需要使用扩展名“.mjs”而不是“.js”来定义我们的文件,并且在导入函数时我还提到了扩展名这 - import { connectMongoDB } from "./config/db.mjs";
它工作得很好
默认情况下,Node JS 根据 CommonJS 标准使用模块。 导入 - 是 ES6 标准。 您需要为 ES6 操作配置 package.json。 添加一对: "type": "module".
例子:
{
"name": "index.js",
"version": "1.0.0",
"main": "index.js",
"type": "module",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"description": ""
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.