无法理解 Node.js 中的导出
Unable to understand Export in Node.js
当我从 Node.js 中的一个文件夹导出函数时,我遇到了一些歧义。
导出报表:
function getPosts(req, res){
res.send("Server is Running");
}
export { getPosts };
导入语句:
import express from "express";
import { getPosts } from "../controllers/posts.js";
const router = express.Router();
router.get("/", getPosts);
export default router;
Packet.json:
{
"name": "server",
"version": "1.0.0",
"description": "",
"main": "index.js",
"type": "module",
"scripts": {
"start": "nodemon index.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"body-parser": "^1.19.1",
"cors": "^2.8.5",
"express": "^4.17.2",
"mongoose": "^6.1.4"
}
}
错误: Error in the console
但是当我使用这个语句时:export { getPosts };
,那里没有错误。
在packet.json中我添加了"type": "module"
.
谁能解释一下何时使用 export
以及何时使用 module.exports
?
嗯,是的。 module.exports
与 export
不同。两者的工作方式略有不同。 module.exports
用于 CommonJS 模块。 export
用于 ESM 模块。 import
和 export
在 ESM 模块中可以很好地协同工作。 module.exports
和 require()
在 CommonJS 模块中可以很好地协同工作。有一些方法可以在两种模块类型之间实现某种可组合性,但这是一个高级主题。如果可能,请在所有地方使用相同的模块类型和匹配的语法。
In packet.json I have added "type": "module"
.
将您的顶级入口点声明为 ESM 模块(您将在其中使用 import
和 export
。
Can anyone explain when to use export
and when module.exports
?
export
用于 ESM 模块。当您添加 "type": "module"
时,您的模块将成为 ESM 模块,您应该在该模块中使用 import
来加载其他 ESM 模块文件。并且,在其他 ESM 模块文件中,您应该使用 export
来声明您想要导出的内容。
module.exports
适用于 CommonJS 模块(旧版本的 nodejs 模块)。尽可能避免混用 CommonJS 和 ESM 模块。而且,由于您已经声明 "type": "module"
,整个目录将被 nodejs 视为 ESM 模块文件。
当我从 Node.js 中的一个文件夹导出函数时,我遇到了一些歧义。
导出报表:
function getPosts(req, res){
res.send("Server is Running");
}
export { getPosts };
导入语句:
import express from "express";
import { getPosts } from "../controllers/posts.js";
const router = express.Router();
router.get("/", getPosts);
export default router;
Packet.json:
{
"name": "server",
"version": "1.0.0",
"description": "",
"main": "index.js",
"type": "module",
"scripts": {
"start": "nodemon index.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"body-parser": "^1.19.1",
"cors": "^2.8.5",
"express": "^4.17.2",
"mongoose": "^6.1.4"
}
}
错误: Error in the console
但是当我使用这个语句时:export { getPosts };
,那里没有错误。
在packet.json中我添加了"type": "module"
.
谁能解释一下何时使用 export
以及何时使用 module.exports
?
嗯,是的。 module.exports
与 export
不同。两者的工作方式略有不同。 module.exports
用于 CommonJS 模块。 export
用于 ESM 模块。 import
和 export
在 ESM 模块中可以很好地协同工作。 module.exports
和 require()
在 CommonJS 模块中可以很好地协同工作。有一些方法可以在两种模块类型之间实现某种可组合性,但这是一个高级主题。如果可能,请在所有地方使用相同的模块类型和匹配的语法。
In packet.json I have added
"type": "module"
.
将您的顶级入口点声明为 ESM 模块(您将在其中使用 import
和 export
。
Can anyone explain when to use
export
and whenmodule.exports
?
export
用于 ESM 模块。当您添加 "type": "module"
时,您的模块将成为 ESM 模块,您应该在该模块中使用 import
来加载其他 ESM 模块文件。并且,在其他 ESM 模块文件中,您应该使用 export
来声明您想要导出的内容。
module.exports
适用于 CommonJS 模块(旧版本的 nodejs 模块)。尽可能避免混用 CommonJS 和 ESM 模块。而且,由于您已经声明 "type": "module"
,整个目录将被 nodejs 视为 ESM 模块文件。