常见问题
node 版本太老旧
Node 版本需要>=12.x,建议18.x
mysql8.0 连接认证失败
mysql8.0 默认的认证方式不是账户密码,可以根据修改方式修改即可
windows 下 vscode 开发报 Expected linebreaks to be 'LF' but found 'CRLF'
解决办法参考
Linux 下 dev 启动 ENOSPC Error
由于 Linux 默认对读取文件的数量是有限制的,开发模式会监测文件变化,解决方式:
运行命令 echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
开启跨域
现在发现很多开发的同学一遇到跨域的问题,首先就是想着怎么在服务端开启跨域。其实跨域(CORS,Cross-Origin Resource Sharing)是一个安全机制,当Web浏览器尝试执行一个跨域的XMLHttpRequest或Fetch请求时,如果目标服务器没有明确允许源服务器进行这样的请求,那么请求就会被浏览器阻止。
所以非必要是不建议开启跨域的!!!
一般解决跨域有两种方式:
- 开发的时候可以用代理,比如vite、webpack提供的代理功能;
- 生产环境可以用如:nginx代理,来使前端和后端的Api接口保持在同一个“域”;
如果有特殊需求要开启跨域,找到configuration.ts
文件,打开跨域插件的注释即可:
@Configuration({
imports: [
// https://koajs.com/
koa,
// 是否开启跨域(注:顺序不能乱放!!!) http://www.midwayjs.org/docs/extensions/cross_domain
// crossDomain,
sms,
{
component: info,
enabledEnvironment: ['local'],
},
],
importConfigs: [join(__dirname, './config')],
})
export class ContainerLifeCycle {
}
数据库生成 entity
https://midwayjs.org/docs/tool/typeorm_generator
数据库报 group by 相关错误
建议使用数据库最新版本,并开启 group by
my.cnf
sql_mode 删除 ONLY_FULL_GROUP_BY