231206笔记:next-auth
Opened this issue · 1 comments
Q1: 如何在webstorm中调试next.js,包括前后端代码
- 后端debug
- debug模式启动dev服务器
- 前端debug
- 配置JavaScript Debug,输入前端url地址
Q2:postgresql docker 的管理员账号
账号一般是:postgresql
密码在配置docker的POSTGRES_PASSWORD中
Q3:windows抓包软件
Reqable
Q4: next-auth本地配置github,登陆之后404
本地地址github无法回调,只能部署
Q5:next.js如何获取request ip
从request.headers['x-forwarded-for']中获取
Q6: ip获取到的是::1
是ipv6的本地地址
Q7:prisma中用enum定义字段, 创建的如何写?
举例,如果定义了一个enum类型的字段,如下:
enum System{
WINDOWS
LINUX
MAC
}
那么在创建的时候,需要写成:
await prisma.system.create({
data:{
name: 'WINDOWS' as System
}
})
Q8: nextauth有那些callback?
session、jwt、redirect、signIn
session没登陆成功前会调用,然后登陆成功之后手动调用才会触发
jwt只有在使用json web token的时候才会调用
redirect是在调整地址的时候调用,一般没什么用
signIn是在登陆成功前调用
Q9: next.js的server component如何用点击事件?
点击封装成一个组件,如何导入。
举例,点击事件封装在<Click>
组件中,动态导入的方法:
const Click = dynamic(() => import('../components/Click'), {
ssr: false
})
Q10: user-agent解析库推荐?
ua-parser-js
Q11: client component如何进行数据库操作?
client component不能直接操作数据库,需要通过api来操作。将数据库操作封装成api,然后在client component中调用api。
Q12: 如何通过ip获取地理位置?
用geoip相关的库,如geoip-lite,fast-geoip
Q13:如果一个包只提供了require方法,没用export导出,如何在typescript中使用?
require和import的方法的区别是:require的根据规范是commonjs,import的根据规范是es6
如果一个包只提供了require方法,没用export导出,那么在typescript中使用的时候,需要用require导入,然后用as转换成类型,如下:
import * as geoip from 'geoip-lite'
const geoip = require('geoip-lite') as typeof import('geoip-lite')
Q13:fork的仓库如何对原仓库提pull request?
- fork原仓库
- clone自己的仓库
- 在自己的仓库中创建一个分支
- 在分支中修改代码
- 将remote的仓库地址改成原仓库地址
- push到原仓库的提供pr的分支
墙推VScode,免费好用,有机会试试。
Q3:推荐试试BurpSuite,虽然那个工具是安全方向的,但用内置浏览器抓包很干净
Q4:可以回调,在NextRMM项目中试过,是可行的
Q7:貌似Prisma只有DB为PG的时候,才能用enum
Q9的举例有点怪,不需要封装应该也行才对
Q11:trpc就是解决这方面的问题的(但本质还是前端向后端发请求)