我有2个遗留的JS文件,我不想改变它们。出于这个原因,我想使用exports-loader和imports-loader
文件B-legacy需要文件A-legacy
中的全局var GLOB我的webpack.config.js导致
rules: [
{ test: /\.ts$/, use: 'ts-loader' }, // Typescript file loader;
{
test: path.resolve(__dirname, '../Scripts/legacy/A-legacy'),
use: 'exports-loader?GLOB'
},
{
test: path.resolve(__dirname, '../Scripts/legacy/B-legacy'),
use: 'imports-loader?GLOB'
}
],
我的理解应该有用。我在A-legacy中导出GLOB var并希望将其导入B-legacy。
但是构建它会产生以下错误:
> ./Scripts/legacy/B-legacy.js中的错误 找不到模块:错误:无法解决' GLOB' in' C:\ anypath \ Scripts \ legacy' @ ./Scripts/legacy/A-legacy.js 2:11-26
我已经尝试添加强制执行:" pre"到exports-loader规则。但这并没有改变任何事情
答案 0 :(得分:0)
尽管我使用的是内联导入,但是在安装过程中发生了完全相同的错误。我解决问题的方法是删除imports-loader
文件中的B-legacy
。
示例设置是我遇到Module not found
错误:
import formValidation from 'exports-loader?FormValidation!./src/form-validation';
import script from '!!imports-loader?$=jquery,FormValidation!./src/script';
固定设置:
import formValidation from 'exports-loader?FormValidation!./src/form-validation';
import script from '!!imports-loader?$=jquery!./src/script'; // removed FormValidation
最重要的是,我不得不公开FormValidation
,使其在浏览器中仍然可用,并使用imports-loader
将this
定义为window
:
import formValidation from 'expose-loader?FormValidation!imports-loader?this=>window!exports-loader?FormValidation!./src/form-validation';
请注意,装载机的顺序很重要。