SVF-файл не загружается должным образом в Forge Viewer из папки stati c - PullRequest
0 голосов
/ 06 февраля 2020

Я создаю приложение create-реагировать-приложение, в котором мне нужно скачать, распаковать и обслужить файлы, которые будут загружены в (просмотр) компонента просмотра. Работает локально, это отлично работает. Когда я пытаюсь выполнить развертывание на heroku, я получаю следующую ошибку:

Ошибка при обработке SVF: {"url": "https://mysterious-refuge-79338.herokuapp.com/viewables/744af950-6cb9-48c8-ac8c-dfec8f047166viewable/output/1/result.svf", "exception": " Ошибка: Конец записи центрального каталога не найден "," стек ":" Ошибка: Конец записи центрального каталога не найден \ n в Y (большой двоичный объект: https://mysterious-refuge-79338.herokuapp.com/50f3b2a8-61f8-4107-9055-ece0f92db53f: 2: 11694 ) \ n в Ner (blob: https://mysterious-refuge-79338.herokuapp.com/50f3b2a8-61f8-4107-9055-ece0f92db53f: 2: 13124 ) \ n в V.loadManifest .... (Остальная часть ошибки удалена, чтобы получить обмен стека для разрешения публикации.)}

Файлы извлекаются в client / public / viewables, который обслуживается приложением:

if (process.env.NODE_ENV === 'production') {
    // Express will serve up production assets
    // like our main.js file, or main.css file!
    app.use(express.static('client/build'));
    app.use(express.static('client/public'));

    // Express will serve up the index.html file
    // if it doesn't recognize the route
    const path = require('path');
    app.get('*', (req, res) => {
      res.sendFile(path.resolve(__dirname, 'client', 'build', 'index.html'));
    });
    app.get('*', (req, res) => {
      res.sendFile(path.resolve(__dirname, 'client', 'public', 'index.html'));
    });
  }

Путь к пузырю. Файл json затем загружается в Viewer :

function launchViewer(div, urn) {
getToken.accessToken.then((token) => {
    var options = {
        'document': urn,
        'env': 'AutodeskProduction',
        'accessToken': token.access_token,
        'api': 'derivativeV2',
      };

      Autodesk.Viewing.Initializer(options, () => {
        viewer = new Autodesk.Viewing.GuiViewer3D(document.getElementById(div));
        viewer.start();
        // var documentId = 'urn:' + urn;
        Autodesk.Viewing.Document.load(urn, onDocumentLoadSuccess, onDocumentLoadFailure);
        viewer.loadExtension('Autodesk.ModelStructure');
      });
});

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

1 Ответ

0 голосов
/ 07 февраля 2020

Document API не поддерживает загруженный SVF в настоящее время, поскольку в локальной среде env нет доступных данных манифеста. Вы должны сделать следующее:

  1. Изменить env с AutodeskProduction на Local
  2. Удалить параметр accessToken и api из options
  3. Используйте Viewer3D#start или Viewer3D#loadModel для загрузки https://mysterious-refuge-79338.herokuapp.com/viewables/744af950-6cb9-48c8-ac8c-dfec8f047166viewable/output/1/result.svf

ref: https://github.com/Autodesk-Forge/viewer-javascript-offline.sample/blob/gh-pages/index.html
ref2: https://github.com/yiskang/forge-viewer-offline-net-mvc/blob/master/Autodesk/Views/Home/Index.cshtml

...