web-dev-qa-db-ja.com

webpackでmoment-timezoneを使用するにはどうすればよいですか?

Webpackを使用してプロジェクトをビルドする場合、通常、npmモジュールからCommonJSのモジュールが必要です。私のプロジェクトにはmoment-timezoneが必要ですが、パッケージをビルドする際には、moment-timezoneからすべてのデータもビルドする必要があります。

さらに、ビルドは次のエラーで失敗します。

ERROR in ./~/moment-timezone/data/packed/latest.json
Module parse failed: /site/node_modules/moment-timezone/data/packed/latest.json Line 2: Unexpected token :
You may need an appropriate loader to handle this file type.
| {
|   "version": "2015a",
|   "zones": [
|       "Africa/Abidjan|LMT GMT|g.8 0|01|-2ldXH.Q",
@ ./~/moment-timezone/index.js 4:15-51

この時点では、ビルドが実際に成功した場合のビルドのサイズについてのように、ビルドの失敗については心配していません。ただし、ある時点で失敗したビルドにも対処する必要があることは明らかです。

特にwebpackを使用して(または多分browserifyも)この同じ問題に遭遇した場合は、これを処理する方法についてのポインタをいただければ幸いです。

51
jaredkwright

これを修正するには、Webpack構成にJSONローダーを追加します。

$npm install json-loader

そして、webpack.config.jsのローダーに追加します。拡張機能も追加することを忘れないでください。

{
  module: {
    loaders: [
        {include: /\.json$/, loaders: ["json-loader"]}
    ]
  },
  resolve: {
    extensions: ['', '.json', '.jsx', '.js']
  }
}
84
Jeroen Coumans

webpack 2.x(現在ベータ版)を使用している場合

npm install json-loader

これをrulesに含めます

{
    test: /\.json$/,
    loader: "json-loader"
}
12
William S