2016-11-12 11 views
4

TypeScriptプロジェクトでWebpackを使用しています。Webpack TypeScript module.hotが存在しません

私のconfigureStore.dev.tsファイルで、私はWebpackからmodule.hotを使用してHMRを有効にしたいと考えています。

私の問題は、hotがデフォルトでNodeModuleに存在せず、@types/webpack-envをインストールしても私の問題は解決しないということです。 @types/webpack-env定義で見た後@type/webpack-env


@types/node紛争、彼らはすべてが明確に定義されModuleインタフェースを定義します。

しかし、ライン上の紛争があった:moduleとして

declare var module: __WebpackModuleApi.Module; 

がすでにNodeModuleとして@types/nodeによって定義されたが。

単に@types/nodehotmoduleで利用できるようになりましたが削除されました。


processは今、私は@types/nodeが削除されたことを今

定義されていない、私は正しくprocessを定義する方法

process.env.NODE_ENV === 'production' 

を確認することができませんか?

+0

タイプミス: '@タイプ/ WebPACKの-env'は' @タイプ/ WebPACKの-env' – xcatliu

答えて

5

グローバルスコープを拡張し、インターフェイスマージを使用してNodeModuleインターフェイスを再度開き、不足しているhotプロパティを追加できます。

import webpack = require("webpack"); 

declare global { 
    interface NodeModule { 
     hot: { 
      accept(dependencies: string[], callback: (updatedDependencies: string[]) => void): void; 
      accept(dependency: string, callback:() => void): void; 
      accept(errHandler?: (err: any) => void): void; 
      decline(dependencies: string[]): void; 
      decline(dependency: string): void; 
      decline(): void; 

      dispose(callback: (data: any) => void): void; 
      addDisposeHandler(callback: (data: any) => void): void; 

      removeDisposeHandler(callback: (data: any) => void): void; 
      // ... 
     } 
    } 
} 

実際には、この拡張はWebpack宣言ファイル自体で行われるべきです。

+0

する必要がありますはい、私はそこだろうと思いました公式の解決策で、定義はどこかで入手可能です。 – kube

+0

あなたは絶対にPRを送ることができ、APIが適切であればそれを受け入れます。私はほとんどの場合、現在のドキュメントから見つけられるものに基づいて答えを書きました。そうでなければこれを受け入れると思いますか? –

+1

実際には '@ types/webpack-env'ですべてがうまく定義されていますが、モジュールを使用できるようにするために' @ types/node'を追加したのでエラーになります。 – kube

7

ファイルの先頭に次の行を追加するだけで簡単にできます。

///<reference types="webpack-env" /> 
+2

これはwebpack-envの入力をインストールした後に動作します: npm install --save-dev @ types/webpack-env – Patrik

9

数人はそれが最善の方法だとここに書いたように:予想通り、それは認識されないhotプロパティで問題を解決し、働く私にとって

npm i -D @types/webpack-env 

。私のプロジェクトで

私はそれらのバージョンを使用しています:

"@types/node": "^8.0.19", 
"@types/webpack-env": "^1.13.0" 

質問は私を助けてWebPACKのための型をインストールする最新のが、私の問題のために、まだであれば、私は知りません。

0

変更。[ 'ホット']によって、ホット

if (module.hot) { 
    module.hot.accept(); 
    module.hot.dispose(() => { 

使用

if (module['hot']) { 
    module['hot'].accept(); 
    module['hot'].dispose(() => { 
関連する問題