ReferenceError: openpgp не определен

Я создаю простое расширение для Chrome, которое может шифровать и расшифровывать строки с помощью библиотеки openPGP. Однако я не могу определить openGPG и постоянно получаю сообщение об ошибке:

ReferenceError: openpgp is not defined

Я определил библиотеку openGPG в своем HTML-файле, который, я думаю, делает ее доступной по всему миру, верно?

Мой код HTML и JS ниже

JS файл с моим шифрованием. Очень ранняя версия, но я просто хотел запустить ее, прежде чем определять ключи и добавлять эту логику.

    document.getElementById("encryptTest").addEventListener('click', () => {
        console.info("Popup DOM fully loaded and parsed");
    
        async function encryptString() {
            // put keys in backtick (``) to avoid errors caused by spaces or tabs
            const publicKeyArmored = `-----BEGIN PGP PUBLIC KEY BLOCK-----
        ...
        -----END PGP PUBLIC KEY BLOCK-----`;
            const privateKeyArmored = `-----BEGIN PGP PRIVATE KEY BLOCK-----
        ...
        -----END PGP PRIVATE KEY BLOCK-----`; // encrypted private key
            const passphrase = `yourPassphrase`; // what the private key is encrypted with
        
            const { keys: [privateKey] } = await openpgp.key.readArmored(privateKeyArmored);
            await privateKey.decrypt(passphrase);
        
            const { data: encrypted } = await openpgp.encrypt({
                message: openpgp.message.fromText('Hello, World!'),                 // input as Message object
                publicKeys: (await openpgp.key.readArmored(publicKeyArmored)).keys, // for encryption
                privateKeys: [privateKey]                                           // for signing (optional)
            });
            console.info(encrypted); // '-----BEGIN PGP MESSAGE ... END PGP MESSAGE-----'
            const { data: decrypted } = await openpgp.decrypt({
                message: await openpgp.message.readArmored(encrypted),              // parse armored message
                publicKeys: (await openpgp.key.readArmored(publicKeyArmored)).keys, // for verification (optional)
                privateKeys: [privateKey]                                           // for decryption
            });
            console.info(decrypted); // 'Hello, World!'
        }
    
        //We have permission to access the activeTab, so we can call chrome.tabs.executeScript:
        chrome.tabs.executeScript({
            code: '(' + encryptString + ')();' //argument here is a string but function.toString() returns function's code
        });
    });

HTML-файл

<!DOCTYPE html>
<html>
  <head>
    <style>
        body {
            width: 350px;
            height: 500px;
        }
      button {
        height: 50px;
        width: 150px;
        outline: none;
      }
      input {
        width: 95%;
        padding: 5px;
        margin-right: 15px;
        margin-top: 50px;
      }
      .decrypt {
        margin-top: 10px;
        width: 150px;
        height: 35px;
      }
    </style>

  </head>
  <body>
      <h1>AIS PGP Exam Encryption</h1>
    <button id = "generateKey">Generate Key</button>
    <button id = "htmlGrabber">Get HTML</button>
    <input placeholder = "Private Key"></input>
    <input placeholder = "Message to Decrypt"></input>
    <button class = "decrypt">Decrypt Message</button>
    <button id = "encryptTest">Test</button>
  </body>
  <script src = "../js/jquery-3.5.1.min.js"></script>
  <script src = "../js/openpgp.min.js"></script>
  <script src = "../js/encrypt.js"></script>
  <script src = "../js/htmlGrabber.js"></script>
</html>
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
557
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я думаю, проблема в том, что функция изолирована в вашем коде. Также не забудьте правильно определить его в своем HTML-файле. Добро пожаловать в Stack Overflow :)!

Другие вопросы по теме