Как динамически загрузить javascript в электронный рендер? - PullRequest
0 голосов
/ 14 апреля 2020

Я знаю, что есть много вопросов по этой теме c, но это очень точно c, и я попробовал много ответов.

У меня есть электронное приложение, и я хотел бы, чтобы люди добавили свой собственный код javascript, и я подумал, что это будет действительно просто, но у меня есть следующие ограничения:

  • Код не будет находиться внутри работающей папки js или node_modules может быть, в другой папке, например $HOME/.app/plugins (для простоты названной FOLDER)
  • Я использую веб-пакет для "сборки" кода приложения.
  • Код должен выполняться в процессе рендеринга, а не основной процесс

Что я пробовал:

  • 1
require("$FOLDER/test/index.js")

Это не работает, поскольку test находится за пределами папки проекта.

  • 2
require('module').globalPaths.push("$FOLDER/test/index.js");
require("test")

Не работает в процессе рендеринга, но работает в основном процессе.

  • 3

Для бега

export NODE_PATH=$FOLDER
npm run start
require("test")

Тот же результат, что и 2

  • 4

От другой ответ stackoverflow

function loadjs(file) {
    var script = document.createElement("script");
    script.type = "text/javascript";
    script.src = file;
    script.onload = function(){
        alert("Script is ready!");
        console.log(test.defult_id);
    };
    document.body.appendChild(script);
}
loadjs("$FOLDER/test/index.js")

Создает тег <script src="$FOLDER/test/index.js"></script>, но никогда не запускает код. Я думаю, это соображения безопасности.

  • 5

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

  • 6

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

Спасибо за чтение!

Редактировать

Я нашел что-то! Если я помещаю require () вне какого-либо класса или функции, он работает, но если я помещаю require внутри функции, он не работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...