app.ts
xxxUtils.ts
xxxForm.ts
xxxService.ts
xxx.d.ts
Uncaught TypeError: Failed to resolve module specifier "axios".
TypeScript는 npm
으로 설치합니다. 하지만 브라우저는 npm
으로 설치된 모듈을 직접 이해하지 못합니다.
브라우저가 모듈을 이해할 수 있게 하는 2가지 방법이 있습니다.
1. CDN(Central Distribution Network) 직접 사용
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
2. 모듈 번들러 사용 (Webpack, Vite)
브라우저에서 TypeScript로 작성한 파일을 작동시키기 위해선 JavaScript로 컴파일을 해야합니다.
하지만, TypeScript 파일에 변경 사항이 생겼을 때 매번 수동으로 tsc
명령을 실행해 컴파일을 하는 것이 번거로웠습니다.
자동으로 변경 사항을 즉각 알 수 있는 방법이 없을까하고 찾아보게 됐습니다.
tsc --watch
컴파일 명령어 tsc
에 --watch
옵션을 사용하면 watch mode 가 활성화됩니다.
이후에 코드를 작성하면, 변경 사항을 즉각 알 수 있습니다. (터미널이 항상 열려있어야 함)
웹 개발에서 필수적으로 설정해줘야 하는 Cors Policy 입니다.
클라이언트
withCredential
옵션과 함께 API 요청 메세지를 전달합니다.
서버
이번 백엔드는 Spring Security를 통해 사용자 인증을 수행했기 때문에 Security 모듈 내에서 설정을 해줬습니다.
Security Chain에서 Cors 설정
public CorsConfigurationSource corsConfigurationSource() {
CorsConfiguration configuration = new CorsConfiguration();
configuration.setAllowedOrigins(List.of("http://127.0.0.1:5500"));
configuration.setAllowedMethods(Arrays.asList("GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS"));
configuration.setAllowedHeaders(List.of("*"));
configuration.setAllowCredentials(true);
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", configuration);
return source;
}
csrf 비활성화 (활성화 상태 설정 시 클라이언트에게 토큰 요구)
.csrf(AbstractHttpConfigurer::disable)
file.d.ts
함수를 사용할 때 유용하게 썼던 부분입니다.
?
를 붙여 변수를 선택적으로 사용할 수 있게 설정할 수 있습니다.export interface User {
username: string;
password: string;
nickname?: string;
telephone?: string;
secureQuestionId?: string;
answerContent?: string;
}