我想将dat.GUI库用于使用Webpack 2构建的项目。如果我通过npm -install --save-dev dat.gui
安装模块,然后尝试使用import * as DAT from 'dat.gui';
导入它当Webpack尝试编译我的项目时出现以下错误:
ERROR in ./~/dat.gui/src/dat/controllers/NumberControllerSlider.js
Module not found: Error: Can't resolve 'style' in
'/home/me/myProject/node_modules/dat.gui/src/dat/controllers'
BREAKING CHANGE: It's no longer allowed to omit the '-loader' suffix
when using loaders.
我知道使用Webpack 2构建基于Webpack 1的项目时会发生此错误。但是,如果node_modules/dat.gui/build';
内部已有构建版本,为什么Webpack甚至会尝试构建模块?有没有办法告诉Webpack或NPM使用现有的构建版本而不试图重新构建它?
答案 0 :(得分:4)
导入节点模块时,webpack会查看其package.json
并使用main
field作为模块的条目,类似于Node.js的操作(webpack默认查找更多字段,请参阅{ {3}})。
因为对于dat.gui
,主要字段并未指向内置版本,而是指向源,实际内联resolve.mainFields
styleSheet
导入的加载器,而不是一般来说这是一个好主意,当然也不会发表。
但您可以通过指定相应的路径来导入构建的版本。所以你的导入是:
import * as DAT from 'dat.gui/build/dat.gui.js';
如果您仍希望仅导入dat.gui
,则可以将dat.gui@0.6.1 - NumberControllerSlider.js配置为指向内置版本,如下所示:
resolve: {
alias: {
'dat.gui': 'dat.gui/build/dat.gui.js'
}
}
这样您就可以使用原始的import语句:
import * as DAT from 'dat.gui';