#javascript #laravel #webpack #laravel-mix #umd
Вопрос:
У меня есть плагин JS со следующей структурой :
(function(global, factory) {
typeof exports === 'object' amp;amp; typeof module !== 'undefined' ? module.exports = factory() :
typeof define === 'function' amp;amp; define.amd ? define(factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.myPlugin = factory());
}(this, function() {
'use strict';
/**/
const myPlugin = (function(options) {
const api = {};
return api;
});
return myPlugin ;
}));
Я пытаюсь загрузить этот плагин внутри app.js файл, созданный Laravel mix.
Для этого в app.js У меня есть следующее :
try {
window.myPlugin = require('./app/plugins/myplugin.js');
} catch (e) {}
Теперь файл фактически импортирован внутрь app.js, но когда я пытаюсь использовать myPlugin в другом файле JS, я получаю ошибку myPlugin is not a function
const pluginVar = myPlugin(options);
//myPlugin is not a function
Если я попытаюсь console.log(typeof myPlugin)
, то получу Object
.
Ответ №1:
Решение было довольно простым :
try {
require('./app/plugins/myplugin.js');
} catch (e) {}
Я предполагаю, потому что код плагина уже был назначен окну внутри функции(глобальной, заводской) iife.