【发布时间】:2021-03-10 18:13:23
【问题描述】:
我刚刚开始将 Laravel Mix 用于现有项目,该项目以前有一个静态 JS 文件,其中包含我自己的 jquery 代码和一些粘贴的库的混合。其中一个库用于名为 lity 的灯箱。然而这个问题很笼统,它不是真的关于lity。我认为有一些关于将 JS 集成到 webpack 中的一般原则,我不太理解。
场景
所以我现在正在使用 Mix,我有一个 JS 文件,其中包含我自己的随机代码,我还包含了我需要的最新官方 JS 库(通过 npm)。
即我将以下行添加到我的 JS 文件中以包含我通过 npm 安装的 lity 库。
lity = require('lity');
我快到了,但是我之前在 document.ready() 代码中的以下代码不起作用,因为它似乎无法引用 lity 对象。
在我的自定义 JS 文件顶部仍然存在问题的代码如下
$(document).ready(function() {
lity.handlers('', function(target, instance) {
// for specific page urls I add a class to the lity container
if ( target.indexOf('/page1')>-1 || target.indexOf('/page-name2')>-1 ) {
instance.element().find('.lity-container').addClass("lity-resize450");
}
return lity.iframe(target, instance);
});
});
错误
当 JS 编译时(它没有错误)我在运行时得到以下内容
app.js?20200217:62 Uncaught TypeError: lity.iframe is not a function
at app.js?20200217:62
at Function.<anonymous> (app.js?20200217:13561)
at Function.each (app.js?20200217:2612)
at factory (app.js?20200217:13548)
at new Lity (app.js?20200217:13661)
at lity (app.js?20200217:13724)
at HTMLSpanElement.<anonymous> (app.js?20200217:461)
at HTMLDocument.dispatch (jquery.min.js:2)
at HTMLDocument.v.handle (jquery.min.js:2)
因此,似乎无法以某种方式访问 litity。 .. 那么这有什么问题呢?有人有想法吗?
【问题讨论】:
-
在你的 webpack 中添加 lity 别名
mix.webpackConfig({ resolve: { alias: { 'lity': path.join(__dirname, 'node_modules/lity/src/lity') } } }); -
不知道是不是我理解的描述有误,你的webpack.mix.js中有require()吗?
标签: webpack laravel-mix