我有一个已购买的带有以下几行的react模板,但是我不清楚它的目的是什么,该模板在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)
这段代码真正的作用是什么?用简单的英语
答案 0 :(得分:3)
此代码与Webpack的热模块更换功能(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
或它需要的模块之一/在需求/导入树中的导入被更新时,请重新渲染整个React应用。
节点模块上的hot
属性不是标准属性,因此会出现TS错误-确保安装所需的类型定义! npm install --save-dev @types/webpack-env
应该可以解决问题。
相关阅读:
module.hot.accept
的作用答案 1 :(得分:1)
只是添加到已接受的答案:安装 @types/webpack-env
后,您可能需要将 "types": ["webpack-env"]
添加到 tsconfig.json
中的 compilerOptions
。直到那时它终于对我有用。
所以您的 tsconfig.json
将如下所示:
{
"compilerOptions": {
...
"types": ["webpack-env"]
},
...
}