sourcecode

'NodeModule'.ts(2339) 유형에 'hot' 속성이 없습니다.

copyscript 2023. 3. 20. 23:25
반응형

'NodeModule'.ts(2339) 유형에 'hot' 속성이 없습니다.

구입한 리액션템플릿에 다음 행이 있는데, 그 용도가 무엇인지 잘 모르겠습니다.템플릿은 JS에 있고 Typescript로 변경하고 싶습니다.

템플릿에 다음 행이 있습니다.

 if (module.hot) {
    module.hot.accept('./dashApp.js', () => {
      const NextApp = require('./dashApp').default;
      ReactDOM.render(<NextApp />, document.getElementById('root'));
    });
  }

단, 로 이름이 변경되었을 경우.TS, 다음의 에러가 표시됩니다.

Property 'hot' does not exist on type 'NodeModule'.ts(2339)

이 코드의 실제 기능은 무엇입니까?쉬운 영어로

이 코드는 Webpack의 Hot Module Replacement Feature(HMR; 핫 모듈 교환 기능)와 관련되어 있습니다. module.hot다음과 같이 동작합니다.

module.hot.accept(
  dependencies, // Either a string or an array of strings
  callback // Function to fire when the dependencies are updated
);

따라서 당신이 포함시킨 코드는 다음과 같습니다. *코드명은./dashApp.js또는 Requirement/Import 트리에서 필요한 모듈/Import 모듈 중 하나가 업데이트되면 React 앱 전체를 다시 렌더링합니다.

hot노드 모듈의 속성이 표준이 아니므로 TS 오류가 발생합니다. 필요한 유형 정의를 설치해야 합니다. npm install --save-dev @types/webpack-env효과가 있을 거야


관련 읽기:

승인된 답변에 추가하기 위해: 설치 후@types/webpack-env추가가 필요할 수 있습니다."types": ["webpack-env"]고객님께tsconfig.jsoncompilerOptions그제서야 효과가 있었다.

그래서 당신의tsconfig.json다음과 같습니다.

{
  "compilerOptions": {
    ...
    "types": ["webpack-env"]
  },
  ...
}

언급URL : https://stackoverflow.com/questions/55263085/property-hot-does-not-exist-on-type-nodemodule-ts2339

반응형