Я создаю веб-компонент с помощью vue-cli.3, чтобы использовать его в других проектах с помощью следующей команды:
vue-cli-service build --target lib --name helloworld ./src/components/HelloWorld.vue
Компонент зависит от lodash .Я не хочу связывать lodash с компонентом, потому что lodash будет предоставляться хост-приложением, поэтому я настраиваю webpack в vue.config.js, как показано ниже:
module.exports = {
configureWebpack: {
externals: {
lodash: 'lodash',
root: '_'
}
}
}
Итак, таким образом, яуспешно скомпилировать компонент без lodash.
В хост-приложении (которое будет использовать компонент) я добавляю исходный путь вновь созданного и скомпилированного компонента в index.html:
<script src="http://localhost:8080/helloworld.umd.js"></script>
Зарегистрируйте компонент в App.vue:
<template>
<div id="app">
<demo msg="hello from my component"></demo>
</div>
</template>
<script>
export default {
name: "app",
components: {
demo: helloworld
}
};
</script>
Компонент helloworld визуализируется без проблем.Каждая функция компонента работает без проблем, но как только я вызываю метод lodash, я получаю;
Uncaught TypeError: Cannot read property 'camelCase' of undefined
, что означает, что компонент не может получить доступ к библиотеке lodash, которую использует хост-приложение.
Мне нужно найти способ использования уже связанных библиотек в хост-приложении из компонентов.
Есть ли способ?