我应该如何在webpack中使用moment-timezone?

jar*_*ght 51 javascript timezone node.js momentjs webpack

在使用webpack构建我的项目时,我通常需要来自npm模块的CommonJS中的模块.我需要在我的项目中使用时间 - 时区,但是在构建软件包时,您还必须构建来自时刻 - 时区的所有数据,这可能非常多.

此外,构建失败,出现以下错误:

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
Run Code Online (Sandbox Code Playgroud)

在这一点上,我不关心构建失败,因为我关于构建的大小,如果它实际上成功.虽然,显然失败的构建也需要在某个时候得到解决.

我会很感激有关如何处理这个问题的任何指示,特别是如果你们中的任何人使用webpack(或者也可能是browserify)遇到过同样的问题.

小智 84

您可以通过将JSON加载程序添加到webpack配置来解决此问题.

$npm install json-loader
Run Code Online (Sandbox Code Playgroud)

并将其添加到webpack.config.js中的加载器中.不要忘记添加扩展名.

{
  module: {
    loaders: [
        {include: /\.json$/, loaders: ["json-loader"]}
    ]
  },
  resolve: {
    extensions: ['', '.json', '.jsx', '.js']
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 我有一点"这不起作用"derp时刻 - 结果是因为我的设置使用webpack的dllPlugin缓存依赖项,而我把它放在错误的文件中.将它添加到webpack*dll*配置文件然后"npm run build:dll"为我做了诀窍.作为一个抬头以防有人有类似的时刻. (2认同)

Wil*_*m S 12

如果您使用的是webpack 2.x(目前处于测试阶段)

npm install json-loader
Run Code Online (Sandbox Code Playgroud)

然后把它包括在你的 rules

{
    test: /\.json$/,
    loader: "json-loader"
}
Run Code Online (Sandbox Code Playgroud)