为什么这个文件夹结构会破坏我的 NodeJs 代码?

Why this folder structre breaking my NodeJs code?

提问人:Alpha 提问时间:11/15/2023 最后编辑:Alpha 更新时间:11/16/2023 访问量:44

问:

我构建了一个 node js 项目,后来尝试重新排列代码以根据我的新要求制作文件夹结构。

较旧的结构

|-controller
|   |--docController.js
|-index.js

较新的文件结构

|-adapter/express
|  |--controller
|     |---docController.js
|-route
|  |--docRoute.js
|-frameworks
|  |--app.js
|  |--server.js

使用新结构,我不得不在代码中进行一些更改,例如将路由从 index.js 分离到专用路由 .js。将索引 .js 拆分为服务器和应用程序 .js

现在我的服务器正在运行,但每当我点击我的 API 时,它都无法找到路由。

App.js

const docRoutes = require('./../adapters/express/routes/docRoutes');

const app = express();

app.use('/', docRoutes);
// app.all('*', (req, res, next) => {
//     next(new AppError(`Can't find ${req.originalUrl} on this server!`, 404));
//   });

module.exports = app;

服务器.js

const app = require('./app');
const dotenv = require('dotenv');

dotenv.config({ path: './../config.env' });

const port = process.env.PORT;
const server = app.listen(port, () => {
    console.log(`App running on port ${port}...`);
  });

  process.on('unhandledRejection', err => {
    console.log('UNHANDLED REJECTION! 💥 Shutting down...');
    console.log(err.name, err.message);
    server.close(() => {
      process.exit(1);
    });
  });

docController.js

const axios = require('axios');
const FormData = require('form-data');
const dotenv = require('dotenv');

dotenv.config({ path: './../../../config.env' });
SOME CONST VARIABLES FROM dotenv

const fs = require('fs')


function findValueByKey(obj, targetKey) {
  SOME BORING CODE
}

exports.getAccessToken = async (req, res, next) => {
  SOME BORING CODE
}

FOLLOWED BY FEW EXPORTED FUNCTIONS

文档路由.js

const express = require('express');
const docController = require('./../controllers/docController');

const router = express.Router();


router.get('/get',docController.getAccessToken);
router.post('/create',docController.getAccessToken,docController.createDoc);
router.post('/submit',docController.getAccessToken,docController.addTagsAndSend);
router.get('/preview',docController.getAccessToken,docController.previewDoc);

module.exports = router;

该代码早些时候可以工作,但现在它介于应用程序和路由之间。有 Node js 经验的人能找到问题吗?

JavaScript 节点 .js 表示 axios

评论

1赞 AKX 11/15/2023
试试——我怀疑你正在处理双斜杠......app.use(docRoutes);
0赞 Alpha 11/15/2023
我做了,但相同的响应<body> <pre>Cannot GET /create</pre> </body>
1赞 AKX 11/15/2023
好吧,你没有 的 GET 处理程序,是吗?😁 尝试叮叮当当....../createGET/get
2赞 CodeSmith 11/15/2023
如果您过去了它产生的确切错误,那将会很有帮助。
0赞 Alpha 11/16/2023
是的,我花了几个小时试图找到这个,但我从未想过响应本身正在尖叫解决方案。感谢 AKX 和 DanteTheSmith 的宝贵时间:)

答:

0赞 Alpha 11/16/2023 #1

事实证明,/create 没有 get 处理程序。我只需要在电话后打它,它就开始工作了