1.首先手动创建目录文件夹,并cmd进入此文件夹。
2.切换全局淘宝镜像
npm config set registry https://registry.npm.taobao.org
如果全局镜像设置失败,可以在参数后面添加
--registry https://registry.npm.taobao.org
注:如果提示 :'npm' 不是内部或外部命令,也不是可运行的程序或批处理文件。请安装nodejs
3.创建项目目录并进入:
注:egg-example为项目根目录名称,可以随便填写。
mkdir egg-server && cd server
4.安装脚手架
npm init egg --type=simple
4.安装install插件
npm install
5.启动程序
npm run dev
访问:127.0.0.1:7001成功并显示
hi, egg
至此项目创建完成。
项目配置关闭csrf开启跨域
1.安装插件:
npm i egg-cors --save
// {app_root}/config/plugin.js
cors:{
enable: true,
package: 'egg-cors',
},
//config/config.default.js
config.security = {
// 关闭 csrf
csrf: {
enable: false,
},
// 跨域白名单
domainWhiteList: [],
};
// 允许跨域的方法
config.cors = {
origin: '*',
allowMethods: 'GET, PUT, POST, DELETE, PATCH'
};
全局异常处理
在app目录下:
新建middleware文件夹
创建error_handler.js文件
贴入以下代码
module.exports = (option, app) => {
return async function errorHandler(ctx, next) {
try {
await next();
// 404 处理
if(ctx.status === 404 && !ctx.body){
ctx.body = {
msg:"fail",
data:'404 错误'
};
}
} catch (err) {
// 记录一条错误日志
app.emit('error', err, ctx);
const status = err.status || 500;
// 生产环境时 500 错误的详细错误内容不返回给客户端,因为可能包含敏感信息
const error = status === 500 && app.config.env === 'prod'
? 'Internal Server Error'
: err.message;
// 从 error 对象上读出各个属性,设置到响应中
ctx.body = {
msg:"fail",
data:error
};
ctx.status = status;
}
};
};
配置config/config.default.js文件
config.middleware = ['errorHandler'];
sequelize和数据库迁移配置
- sequelize 提供了sequelize-cli工具来实现Migrations,我们也可以在 egg 项目中引入 sequelize-cli。
npm install --save-dev sequelize-cli
- egg 项目中,我们希望将所有数据库 Migrations 相关的内容都放在
database
目录下,所以我们在项目根目录下新建一个.sequelizerc
配置文件:
'use strict';
const path = require('path');
module.exports = {
config: path.join(__dirname, 'database/config.json'),
'migrations-path': path.join(__dirname, 'database/migrations'),
'seeders-path': path.join(__dirname, 'database/seeders'),
'models-path': path.join(__dirname, 'app/model'),
};
- 初始化 Migrations 配置文件和目录
npx sequelize init:config
npx sequelize init:migrations
// npx sequelize init:models
- 行完后会生成
database/config.json
文件和database/migrations
目录,我们修改一下database/config.json
中的内容,将其改成我们项目中使用的数据库配置:
{
"development": {
"username": "root",
"password": null,
"database": "eggapi",
"host": "127.0.0.1",
"dialect": "mysql",
"timezone": "+08:00"
}
}
- 创建数据库
npx sequelize db:create
# 升级数据库
npx sequelize db:migrate
# 如果有问题需要回滚,可以通过 `db:migrate:undo` 回退一个变更
# npx sequelize db:migrate:undo
# 可以通过 `db:migrate:undo:all` 回退到初始状态
# npx sequelize db:migrate:undo:all