Вопрос или проблема
Есть ли проблема с функциональностью прослушивания сообщения в Vue – Plasmo?
Я хочу передать простое сообщение из папки contents моего контент-скрипта в Popup.vue
.
Я получаю эту ошибку
node_modules/.pnpm/@[email protected]/node_modules/@plasmohq/messaging/dist/index.js не экспортирует ‘listen’
при попытке выполнить этот код:
Ответ или решение
Судя по предоставленной информации, вы сталкиваетесь с ошибкой, связанной с отсутствием экспорта функции listen
из модуля @plasmohq/messaging
. Давайте разберем проблему и предложим возможное решение.
Ошибка
Ошибка, которую вы получили, говорит о том, что модуль @plasmohq/messaging
не содержит экспортируемой функции listen
. Это может происходить по нескольким причинам:
-
Изменение API: Возможно, в последней версии библиотеки было изменено или удалено API, что привело к тому, что функция
listen
больше не доступна. - Неправильный импорт: Убедитесь, что вы импортируете нужные функции из правильного модуля.
Решение
-
Проверьте документацию: Прежде всего, рекомендуется обратиться к официальной документации Plasmo или репозиторию на GitHub и убедиться, что вы используете правильные и актуальные функции для вашего случая.
-
Убедитесь, что установленная версия актуальна: Проверьте версию библиотеки
@plasmohq/messaging
, установленную в вашем проекте. Вы можете сделать это, запустив команду:npm list @plasmohq/messaging
Если версия устарела, выполните обновление:
npm install @plasmohq/messaging@latest
- Использование других функций: Если функция
listen
была удалена или изменена, попробуйте использовать альтернативные методы для передачи сообщений. Например, в зависимости от вашего кода, вы можете использовать подходы, такие какsendMessage
или подписку на события.
Пример кода
Если вы хотите передать сообщение из вашего контентного скрипта в Popup.vue
, вы можете использовать sendMessage
следующим образом:
В вашем контентном скрипте:
import { sendMessage } from '@plasmohq/messaging';
sendMessage({ type: 'SEND_MESSAGE', payload: 'Ваше сообщение здесь' });
В Popup.vue
:
<template>
<div>
<h1>Сообщение из скрипта:</h1>
<p>{{ message }}</p>
</div>
</template>
<script>
import { onMounted, ref } from 'vue';
import { listen } from '@plasmohq/messaging';
export default {
setup() {
const message = ref('');
onMounted(() => {
listen((message) => {
if (message.type === 'SEND_MESSAGE') {
message.value = message.payload;
}
});
});
return { message };
}
}
</script>
Заключение
Если после выполнения всех вышеуказанных шагов проблема не решается, пожалуйста, предоставьте дополнительную информацию о конфигурации вашего проекта и используемых версиях библиотек. Это поможет более точно диагностировать проблему.