해결된 질문
작성
·
433
3
npm 배포이후
vite 를 사용하지않은 패키지에서
해당 DS npm 을 설치하고
사용하면 위와같은 오류가 나옵니다
먼가 강의대로 하면 Vite 로 이뤄진 패키지만 사용이 가능한걸까요
답변 5
1
1
roberto님 안녕하세요!
그렇지 않습니다. 다른분들의 질문을 보시면 오히려 윈도우에서 vite호환성이 떨어져서 create-react-app으로 진행하시는 분들도 있습니다.
스크린샷으로 올려주신 에러를 통해 추측하기로는 TypeScript 설정이 제대로 되지 않은 것 같습니다. Module parse failed: the keyword 'interface' is reversed
에러는 interface
를 사용할 수 없는 파일에서 interface
라는 키워드가 사용되었을 때 나타나는데요,
디버깅을 위해
파일 extension이 .ts
또는 .tsx
가 맞는지 확인해주시고
package.json
에 TypeScript와 관련된 패키지들이 있는지 확인해주시고
.eslint
에서 TypeScript를 사용할 수 있게 설정이 되어있는지 확인해주시고
tsconfig.json
을 확인해봐야합니다.
2, 3번 항목은 디버깅이 어려우시면 전체 코드를 올려주시면 저도 확인해보겠습니다
0
0
답변 감사합니다! TMI지만 제가 해외출장이 있어서 다녀오자마자 바로 촬영해서 6월중에 업데이트 할 예정입니다! 강의소식과 여기에 답변으로 공유드릴게요. 경험을 공유해주셔서 저도 감사합니다~
0
요건 좀더 궁금한데요
npm publish 를 하게되면 빌드가 일어나고
빌드 과정에서 트랜스파일링이 일어나면
타입스크립트가 자바스크립트로 변환되는것같은데
그럼 npm 에 올려진 패키지를 가져다 쓰는곳에선
자바스크립트를 쓰게 되는건가요 ?
아니면 가져다 쓸떄 타입스크립트로 다시변환이 되는걸까요?
재 생각에 오류가 있다면 피드백 부탁드립니다
정말 감사합니다
roberto님 안녕하세요! 질문에 대한 답변 드립니다
npm publish 를 하게되면 빌드가 일어나고
빌드 과정에서 트랜스파일링이 일어나면
타입스크립트가 자바스크립트로 변환되는것같은데:
맞습니다. npm publish
를 하기 전에 빌드 과정이 실행되며, 이 과정에서 TypeScript 파일들이 JavaScript 파일들로 트랜스파일됩니다. 이는 npm에 올려진 패키지가 JavaScript 파일들로 구성된다는 것을 의미합니다.
그럼 npm 에 올려진 패키지를 가져다 쓰는곳에선
자바스크립트를 쓰게 되는건가요:
npm에 올려진 패키지는 JavaScript 파일들로 구성되어 있기 때문에, 이 패키지를 사용하는 곳에서는 JavaScript 파일들을 사용하게 됩니다. TypeScript는 트랜스파일된 결과물인 JavaScript 파일로 변환되므로, 최종 소비자는 JavaScript를 사용하게 됩니다.
여기는 제가 경험하지 못한 부분이었는데, roberto님께서 마주하신 문제는 빌드과정에서 npm으로 배포된 패키지가 자바스크립트로 변환되지 않아서 발생하는 문제입니다
저도 create-next-app
으로 프로젝트를 실시하고 강의에서 사용한 패키지를 설치하니 에러가 발생하네요
tsc
를 사용해서 빌드하면 JavaScript로 변환이 되어야하는데, 트랜스파일이 정상적으로 되지않아 npm에 TypeScript가 그대로 올라간 것 같습니다.
Next.js는 npm 패키지는 JavaScript로 parsing하려고 하는데, 코드가 TypeScript라서 발생한 문제인 것 같습니다
아니면 가져다 쓸떄 타입스크립트로 다시변환이 되는걸까요?
Next.js의 경우 d.ts
를 활용할 수 있도록 npm 패키지를 배포해야 합니다
타입을 활용하려면 d.ts
를 활용하는 식으로 진행해야하는데 해당 부분이 누락되었네요
이 부분은 제가 에러를 확인하고 강의를 추가촬영해서 업로드하고 공지를 드리도록 하겠습니다.
npm publish 한패키지
tsconfig.json>
.eslintrc.cjs >
package.json>
publish 한 npm 을 가져다쓴 패키지는
npx create-next-app 으로 만든 기본 페이지 입니다
뭔가 에러 의심사항이 있을까요
디버깅중인데 잘안되네요 감사드립니다