Prerender javascript framework UiPathRobot.js на стороне сервера не работает

Из инструмента Prerender:

Google, Facebook, Twitter, Yahoo и Bing постоянно пытаются просмотреть ваш сайт... но они не выполняют javascript. Вот почему мы создали Prerender. Prerender идеально подходит для AngularJS SEO, BackboneJS SEO, EmberJS SEO и любого другого фреймворка javascript.

Ссылаясь на этой статьи. Я пытаюсь запустить UiPathRobot.js на своем сервере. Но в настоящее время эта структура всегда выполняется на стороне клиента. Это не имеет никакого смысла. Поэтому я попытался запустить его на сервере и нашел пакет prerender-node на node.js.

Но я так много пробовал, и это не работало или все еще выполнялось на стороне клиента. Итак, это базовая установка, которую я использую:

const express = require('express');
const prerender = require('prerender-node');
const app = express();
app.use(prerender());
app.get('*', (req, res) => {
  res.sendFile('C:\\Users\\name\\Documents\\Git\\rpa_robotjs\\index.html');
});
app.listen(6543);

Что теперь добавить, чтобы отображалась пререндеренная версия:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <link rel="stylesheet" href="/css/styles.css"> 
    <script type="text/javascript" src="scripts/UiPathRobot.js"></script>
    <script type="text/javascript" src="scripts/helper.js"></script>
  </head>
  <body>
    <header>
      <div class="container">
        <img src="/images/logo.png" alt="logo" class="logo-image">
        <span class="logo-text">PROEJCT</span>
      </div>
      <div class="subcontainer">
        <h1>Robot Process Automation</h1>
      </div>
    </header>
    <main>
      <article>
        <h2>Overview of processes</h2>
        <div id="port"></div>
        <div id="username"></div>
        <div id="error-message"></div>
        <div id="robot-status"></div>
        <table>
          <tr>
            <td valign="top">
              <div id="divRobots" style ="border: 1px solid black;"></div>
              <button style="margin-top: 10px;" id="GetRobotProcesses" onclick="refreshRobotProcesses();">Refresh Robot Process</button>    
            </td>
          </tr>
        </table>
      </article>
    </main>
  </body>
</html>

Итак, первый вопрос: как UiPathRobot.js выполняется на стороне сервера?


person kwoxer    schedule 09.10.2020    source источник
comment
Рендеринг на стороне сервера и выполнение некоторого кода на стороне сервера — не обязательно одно и то же. Вы хотите использовать эту библиотеку на стороне сервера или хотите отображать создаваемый ею пользовательский интерфейс на стороне сервера? Если мы говорим о последнем, то, боюсь, вам может помочь только тот, кто разработал эту библиотеку. Без встроенной поддержки это практически невозможно (хотя пререндер работает). Хотя, насколько я могу понять ветку на этом форуме, они сказали вам, что это невозможно, и они не заинтересованы во внедрении SSR (с чем я согласен, в этом нет смысла, цель SSR - SEO).   -  person Sergiu Paraschiv    schedule 09.10.2020
comment
Было бы достаточно, когда библиотека работает на стороне сервера. Производство пользовательского интерфейса может работать на стороне клиента, да. Может быть у вас есть идея, хотя говорят, что она не работает. Я думаю, теперь это означает, что это невозможно. знак равно   -  person kwoxer    schedule 09.10.2020
comment
Я почти уверен, что проблема в том, что эта библиотека предназначена для работы в браузере. Запуск JS на сервере обычно означает запуск его в Node. Вы, конечно, можете запустить его в браузере на своем сервере, но это не то, что вам нужно, верно?   -  person Sergiu Paraschiv    schedule 12.10.2020
comment
Да, он не предназначен для использования в моем пути. Но, может быть, есть обходной путь, чтобы позволить ему работать на сервере? Что UiPathRobot.js не может быть доставлен клиенту по сети. Поэтому страницу нужно как-то предварительно визуализировать. Я уже пробовал prerender, prerender-node безуспешно. Возможно, использование ajax-запросов было бы решением. Или это все ерунда, и вместо этого я должен перейти на использование REST API UiPath? ВДИТ?   -  person kwoxer    schedule 12.10.2020
comment
Это действительно ерунда, извините :) Это библиотека пользовательского интерфейса, генерирует некоторый пользовательский интерфейс, с которым пользователь может что-то делать. В 99,9% случаев такие библиотеки должны работать в браузере, потому что ввод/вывод зависит от DOM, который очень сложно эмулировать вне реального браузера. Возможно, вы сможете предварительно отрендерить его на стороне сервера и отправить сгенерированный HTML-код в браузер, но что хорошего в том, что остальная часть взаимодействия происходит в этом браузере?   -  person Sergiu Paraschiv    schedule 12.10.2020
comment
Если это слишком сложно, я сделаю все чисто с остальным API и найду более правильное решение, в котором нет этих проблем. В любом случае спасибо.   -  person kwoxer    schedule 12.10.2020


Ответы (1)


Что ж, вопрос был бессмысленным, надо сказать. Я обнаружил, что UiPathRobot.js нужно запускать на той же машине, на которой к нему обращаются.

Так что любой вопрос о безопасности не имеет смысла. У него вообще нет безопасности, потому что он в ней не нуждается.

Если вам нужен настоящий сервер с внешним интерфейсом, ознакомьтесь с версией node.js. Orchestrator. Это хорошо работает и очень безопасно, так как работает полностью на стороне сервера, и пользователю отображается только внешний интерфейс.

person kwoxer    schedule 27.02.2021