inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Áp dụng TypeScript cho Node.js (feat. NodeBird)

roperty 'id' does not exist on type 'User'.

893

minsu

27 câu hỏi đã được viết

0

안녕하세요 제로초님,
node Ts 공부를 하고 있습니다.
 
다름이 아니라 여기 코드에서 req.user.id 부분에서 자꾸 에러가 발생합니다.
왜 발생하는 지 모르겠네요.
type update 되고 오류가 나는 것 인지..
 
passport 에서도 별 문제가 없는 거 같은데.
 
    return new TSError(diagnosticText, diagnosticCodes);
TSError: ⨯ Unable to compile TypeScript:
routes/user.ts:120:32 - error TS2339: Property 'id' does not exist on type 'User'.
120         where: { id: req.user!.id },
 
 
 
 
// router/user
router.patch('/username', isLoggedIn, async (req, res, next) => {
try {
await User.update({
username: req.body.username,
}, {
where: { id: req.user!.id }, // Error
});
res.send(req.body.username);
} catch (e) {
console.error(e);
next(e);
}
});
 
 
// models user.ts
class User extends Model {
public id!: number;
public nickname!: string;
public userId!: string;
public password!: string;
public readonly createdAt!: Date;
public readonly updatedAt!: Date;
}
 
// passport index.ts
import passport from 'passport';
import User from '../models/user';
import local from './local';

export default () => {
// serializerUser 메서드를 사용하여 사용자 정보를 Session에 저장할 수 있습니다.
// session에 저장할 정보 done(null,user) 과 같이 두번쨰 인자로 넘기면 됩니다.
// passport.serializeUser((user: User, done: any) => done(null, user.id));
passport.serializeUser((user: any, done) => {
done(null, user.id)
});

// 로그인 되어 있을 경우 모든 사용자 페이지를 접근할 경우.
// deserializeUser 가 발생합니다. -> session에 저장된 값을 이용해.
// 사용자 Profile 찾은 후, HTTP Request 리턴합니다.
passport.deserializeUser<number>(async (id: number, done) => {
try {
const user = await User.findOne({
where: { id },
});
return done(null, user); // req.user
} catch (err) {
console.error(err);
return done(err);
}
});
 
local();
}
 

typescript nodejs 웹앱

Câu trả lời 1

0

zerocho

types 폴더에서 express 관련 req.user 타이핑 추가 하셨나요?

0

minsu

아녀.. 완성본 back types  파일 보니까 req.user 타이핑 안하시고, 타이핑 없이  req.user!.id 사용하셔서 제가 뭐 잘못 코드 짯나 생각했습니다. 혹시 req.user 타이핑 어떻게 해야 하는 지 알려주실 수 있으세요??

0

zerocho

https://github.com/ZeroCho/ts-nodebird/blob/master/ch3/back/types/express/index.d.ts

여기처럼 폴더 만들고 하셔야 합니다.

'S3' 형식에 'S3Client' 형식의 destroy, middlewareStack, send 속성이 없습니다.ts(2739)

0

505

1

throw new Error(&amp;#x60;${this.name}.hasMany called with something that&amp;#x27;s not a subclass of Sequelize.Model&amp;#x60;); 에러 질문

0

342

1

안녕하세요.. connect ECONNREFUSED 127.0.0.1:3306 관련해서 질문드립니다

0

955

1

@types를 dependencies에 넣는 이유?

0

398

1

JS에서 babel 사용시 `import * as` 구문을 안써도되는데, 바벨이 esModuleInterop: true 로 처리해주는 것인가요?

0

318

1

Sequelize Association 오류

0

501

2

Sequelize constructor.primaryKeyAttributes 오류

0

960

1

Sequelize에 요청을 보내면 오류가 뜹니다

0

794

1

강좌에서 사용된 3개의 코드 의미가 궁금합니다 [ 코드 : 1. [ key:string]:string] 2. delete user.password , 3.passport.deserializeUser<number> ]

0

337

1

@mui/x-data-grid 에 사용자정의 컬럼 타입을 추가해서 사용하려고 합니다.

0

2610

1

미들웨어 에러

1

312

1

Could not find a declaration file for mould '../utils/jwt-utils'

1

180

1

마지막에 type과 interface 추가하는 부분

0

217

1

다른 컴퓨터에서 제가 만든 DB 테이블의 데이터를 그대로 사용하려면?

0

282

1

express 모듈 에러 관련

0

236

1

import * as A from 'B'

0

212

1

MySql ssl 보안 옵션 질문 입니다.

0

351

2

passport/index.ts 에러 입니다

1

450

1

routes/post.ts 페이지에서 에러나요..

0

313

1

passport/index.ts 에러납니다...

0

816

1

ts import 에러

0

440

1

타입스크립트로 변환후 nextjs 빌드 후 배포

0

259

1

sequelize include 질문드립니다.!

0

187

1

passport user.id 질문드립니다.

0

200

1