我将编码作为业余爱好,目前正在从事一个新的NodeJS项目。以我有限的知识,我有一种感觉,与ES模块的工作是未来(如果我错了,纠正我)。因此,我想重写一些我有到ES模块中的CommonJS脚本。
我被困在试图转换它的下面一行:require('./app/routes/routes')(app) (我不明白“(应用程序)”部分到底做了什么)。
routes.js:
module.exports = app => {
const recipe = require('../controllers/recipe-controller.js');
var router = require('express').Router();
// Create a new Recipe
router.post('/recipe', recipe.create);
app.use('/api/recipes', router);
};server.js:
import express from 'express'
import db from './app/models/index'
const app = express();
app.get('/', (req, res) => {
res.json({ message: 'Welcome to bezkoder application.' });
});
require('./app/routes/routes')(app);
const PORT = process.env.PORT || 8080;
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}.`);
});发布于 2022-03-13 15:01:31
这一行:
require('./app/routes/routes')(app)是导入一个函数,然后调用它。这在逻辑上与以下几点相同:
const init = require('./app/routes/routes');
init(app);因此,要将其转换为ESM,您需要更改路由模块以导出一个命名函数。然后您可以导入这个命名的函数,然后调用它(将app传递给它)。
routes.js
import express from 'express';
import recipe from '../controllers/recipe-controller.js';
export function init(app) {
// Create a new Recipe
const router = express.Router();
router.post('/recipe', recipe.create);
app.use('/api/recipes', router);
}server.js
import express from 'express'
import db from './app/models/index'
import init from './app/routes/routes';
const app = express();
app.get('/', (req, res) => {
res.json({ message: 'Welcome to bezkoder application.' });
});
init(app);
const PORT = process.env.PORT || 8080;
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}.`);
});https://stackoverflow.com/questions/71457923
复制相似问题