@Innei 的后端用 NestJS 编写,我作为一个弱鸡,只会半桶水瞎 JB 改的,首先第一件事就是想办法让这个项目在我电脑上跑起来了。
首先第一步安装依赖错误,估计是包版本太新,更换为 NPM 官方源解决。之后提示 Node 版本过旧,需要升级到 V16,他问我为什么不用 NVM 管理,于是我恍恍惚惚把我电脑的环境干了好几次,NVM 最后被干没了,但终于换成了 V16。由于项目有 pnpm.lock
文件,于是我也安装了 pnpm。
npm install -g pnpm
TypeORM 标配 Redis 作为查询缓存,上次我集成环境升级之后爆炸了,局域网内没有任何一个 Redis 服务器,于是就用 brew
帮我整一个 redis
先用着了。
brew install redis
然后执行 pnpm start
报错,改成 pnpm start:dev
开发模式,依旧报错,大概看出来是 SQL 执行错误。翻了下 TypeORM 的 文档,给配置文件增加了 logging
属性打印错误。
host: '10.7.9.2',
port: 2345,
username: '21-09-srss',
password: 'xxxxxx',
database: '21-09-srss',
logging: true // <---
根据错误执行的 SQL 内容,我认为大概是字段和属性错误,我定位到了表结构相关文件 xxxx.entity.ts
,故修改如下代码:
// datetime 不能用 TimeStamp,报错
// @Column({ type: 'datetime', default: () => 'CURRENT_TIMESTAMP' })
@Column({ type: 'datetime', default: () => null })
@ApiHideProperty()
created_at: Date
并根据我的数据库结构修改所有 Entity 文件的名称:
// @Entity({ name: 'sites' })
@Entity({ name: 'srss_sites' })
...
至此,服务暂时能跑起来了。于是今晚的直播就推掉了,全程耗时 2h+,真是心累 🥱!这里面有些我不太懂干什么的代码,大概列出来吧:
import { argv } from 'yargs' // 这个包是干什么的,为什么从这里取出了服务端口号
也说下我得知的一些新的:
Reflect.deleteProperty(user, 'password') // 反射对象,类似 delete user.password