3、express项目完善

239 阅读1分钟

在2、创建后端项目(node.js + express)创建以后还有些配置未完善,本文进行完善

一、目录

|ProjectsServer
-node_modules    //依赖包
-routes //路由文件夹
-controllers  //控制器文件夹
-services   //服务文件夹
-utils  //公用文件夹
-.gitignore //git配置
-app.js   //入口文件
-package.json   //配置文件
-nodemon.json   //nodemon配置文件
-yarn.lock  //依赖包锁
|ProjectsServer

二、配置nodemon

nodemon可以理解是热更新,就是在程序在node环境运行,修改代码,立即更新。应该不会有人拒绝吧。

安装

yarn add nodemon

配置项,根目录nodemon.json

{
    "verbose": true,
    "watch":["*/*"],
    "ignore": ["*.test.js", "fixtures/*"],
    "script": "app.js",
    "execMap": {
      "rb": "ruby",
      "pde": "processing --sketch={{pwd}} --run"
    },
    "options":{
        "extensions":["js", "coffee"],
        "exec": "node"
    }
}

配置package.json

...
"scripts": {
    "start": "nodemon --config nodemon.json",
    "server": "node app.js"
  },
...

以后启动项目就用 yarn start

三、配置post请求

主要是通过body-parser解析请求体

使用方法

const bodyparser = require('body-parser');
app.use(bodyparser.urlencoded({ extende: true }));
app.use(bodyparser.json())  

四、配置cookie

通过cookie-parser实现

安装

yarn add cookie-parser

使用方法

const cookieParser = require('cookie-parser');
app.use(cookieParser())

五、配置公共处理

1、错误处理

utils 目录下创建errorHandler.js

module.exports = (err, req, res, next) => {
    err.statusCode = err.statusCode || 500;
    err.status = err.status || "error";
    res.status(err.statusCode).json({
        status: err.status,
        message: err.message,
    });
};

根目录 app.js使用

const errorHandler = require("./utils/errorHandler");
app.use(errorHandler)

utils 目录下创建appError.js

class AppError extends Error {
    constructor(msg, statusCode) {
        super(msg);

        this.statusCode = statusCode;
        this.error = `${statusCode}`.startsWith('4') ? 'fail' : 'error';
        this.isOperational = true;

        Error.captureStackTrace(this, this.constructor);
    }
}
module.exports = AppError;

根目录app.js 使用

const AppError = require("./utils/appError");
app.all("*", (req, res, next) => {
    next(new AppError(`The URL ${req.originalUrl} does not exists`, 404));
});

到此配置是配置完了,但你不能正常使用,下一章节梳理原理后就OK了