2017-05-23 5 views
0

typescript 및 nodejs를 사용하고 express-jwt를 사용하여 신뢰성을 확인합니다. express-jwt와 함께 사용할 때, 아래에서 볼 수 있듯이 tslint는 unless 함수 뒤에 반환 될 수있는 정의되지 않은 값에 대해 불평하고 있습니다.Node.js express-jwt with express-unless는 "객체가 '정의되지 않음'입니다.

import * as express from "express"; 
import * as jwt from "express-jwt"; 
import * as http from "http"; 

const refConfig = {hash: 'mycompletelysecrethashstring', othersetting: 1 }; 

app.use("/api", jwt({ secret: refConfig.hash }).unless({ path: ["/api/auth/signin"] })); 
app.set("port", 8000); 
const server: http.Server = app.listen(app.get("port"),() => { 
    console.log("Server is now running on port " + server.address().port); 
}); 

오류 메시지는 다음과 같습니다 :

[ts] Object is possibly 'undefined'. 

이 경고를 제거 할 수 있으며, 그렇다면, 그렇게하는 올바른 방법은 무엇입니까?

문제는 아래 라인입니다 : 지금까지 내가 말할 수있는

app.use("/api", jwt({ secret: refConfig.hash }).unless({ path: ["/api/auth/signin"] })); 

가, 타이프 라이터 컴파일러 경로의 목록을하지 않는 한의 끝에 빈리스트가 될 수 있음을 불평한다. 원래 목록이 "/ api/auth/signin"의 상위 집합이라는 점을 감안할 때 유효한 문제는 아니지만 경고를 없앨 수는 없습니다.

미리 감사드립니다.

답변

0

refConfig 자체가 먼저 정의되었는지 여부를 확인하지 않고 refConfig.hash을 사용하고 있습니다. 불완전입니다 (초기 사용자에 대한 오류와 예를 들어, 출구를) 더 완벽한 검사가 사전 구성을 확인하고 사건을 처리하는 것

if (refConfig) { 
    app.use("/api", jwt({ secret: refConfig.hash }).unless({ path: ["/api/auth/signin"] })); 
} 

:

대신 뭔가를해야한다. 당신이 예에서 누락하지 않는 한

+0

답장을 보내 주셔서 감사합니다. 그러나 refConfig는 이미 원래 코드에 정의되어 있으며 분명히 이유가 아닙니다. 이 사실을 반영하기 위해 질문의 코드를 업데이트했습니다. 충고 고맙습니다. –

+0

TypeScript 오류로 인해 발생하는 줄 번호를 공유하십시오. – elithrar

+0

elithrar 주셔서 감사합니다. 나는 더 정확한 질문을하기 위해 질문을 수정했다. –

1

, 당신은 app 인스턴스를 생성해야합니다

const app = express() 
app.use(/*...*/) 

또한, 귀하의 예제에서, jwt 함수하지만 객체가 아닙니다. 시도해보십시오.

import jwt from 'express-jwt' 
+0

이것은 응용 프로그램의 일부일 뿐이지 만 질문에 언급 된 경고의 경우를 제외하고는 다른 모든 기능이 제대로 작동합니다. –