Webpack 和导入加载程序错误“无法解析”

Posted

技术标签:

【中文标题】Webpack 和导入加载程序错误“无法解析”【英文标题】:Webpack and imports-loader error "Can't resolve" 【发布时间】:2018-03-23 13:07:33 【问题描述】:

我正在尝试使用 Webpack (v3.6.0) 为我的 Web 应用程序捆绑大量 js 文件,其中一些是 Angular 组件,但大多是遗留代码。

遗留代码与某些特定功能高度相互依赖。例如,我们有一个特定的文件,它声明了 3 个函数(PrepareTranslation、PrepareLocalTranslation 和 Translate),它们在整个系统中使用。

我一直在寻找一种使这 3 个函数全局化的方法,但相反,我找到了一篇关于“imports-loader”的文章,它允许我使用特定符号将变量注入该代码:

require("imports-loader?$=jquery!./myjs");

上面的代码会在 myjs.js 中生成

var $ = require('jquery');

但是,当我尝试使用此方法将需求和变量注入到我的类中时,Webpack 会抛出错误“无法解析 imports-loader?$=jquery!./myjs”。 删除! from the string 修复了错误,但我不太喜欢这样的 sintax,它与我目前在网上找到的所有内容都不同。

我的 webpack 入口点脚本如下:

window._SYS_VER = '452';

import 'jquery';

import 'ThirdParty/angular/angular';

import Emitter from 'ThirdParty/emitter';

//SimpleMVC related
import 'imports-loader?jQuery=jquery./js/simplemvc/simplemvc.modaldialog';
import 'imports-loader?jQuery=jquery./js/simplemvc/simplemvc.paneldialog';
//     import 'imports-loader?jQuery=jquery!./js/simplemvc/simplemvc.paneldialog';
import Translation from 'JS/simplemvc/simplemvc.i18n';

// jQuery related
import 'JS/jquery/ui/jquery-ui.min';
import 'JS/jquery/masked/jquery.maskedinput';
import 'JS/jquery/growl/jquery.growl';
import 'imports-loader?prepareTranslation=>Translation.prepareTranslation./js/jquery/alerts/jquery.alerts';

我尝试过使用 require 语法而不是 import,但它的工作方式相同。

我能够使用 webpack.ProvidePlugin 在每个 js 上使用 jquery,但它不适用于我的 i18n 函数,然后我开始尝试使用 imports-loader

有什么想法吗?

【问题讨论】:

【参考方案1】:

webpack 将imports-loaders 分开,所以需要通过以下方式安装:

yarn add imports-loader

【讨论】:

以上是关于Webpack 和导入加载程序错误“无法解析”的主要内容,如果未能解决你的问题,请参考以下文章

Webpack:无法解析模块“文件加载器”

错误:无法解析模块“样式加载器”

“你可能需要一个适合这种文件类型的加载器”,webpack 无法解析 angular2 文件

未找到模块:错误:无法使用 Webpack 解析“fs”

带有 requirejs/AMD 的 Webpack

直接在应用程序(webpack)的入口点导入文件加载器。感叹号是啥?