Проблема локальной установки Domino 10 AppDevPack

Я занимаюсь этим уже третий день, но не могу найти способ успешно использовать AppDevPack в моем локальном приложении angular. Я работаю на Mac, у меня Angular v 8.15.0. Мне удалось успешно установить библиотеку, но когда я не собирался ее компилировать, она ломается. Чтобы описать: я сделал почти все по сценарию. Единственная разница в том, что я создал сервис, в котором живет @domino (он не находится непосредственно в компоненте). Основная проблема, похоже, связана с grpc, а затем с потоком.

import { Injectable } from '@angular/core';
//import { useServer } from '@domino/domino-db/';
import * as useServer from '../../../node_modules/@domino/domino-db';


@Injectable({
  providedIn: 'root'
})
export class DominoService {

  private serverConfig = {
    hostName: 'http://www.hostname.com/',
    connection: { port:'3002'}
  };

  private databaseConfig = {
    filePath: 'dev-tmp.nsf'
  };

  public database: any;

  constructor() {
    useServer( this.serverConfig ).then( async server => {
      this.database = await server.useDatabase( this.databaseConfig );
    });

    const coll = this.database.bulkReadDocuments({
      query: "Form = 'Document'"
    });
    console.log("Returned docs:" + JSON.stringify(coll));

  }

Вот некоторые из ошибок:

Критическая зависимость: запрос зависимости - это выражение

ПРЕДУПРЕЖДЕНИЕ в ./node_modules/@domino/domino-db/node_modules/grpc/node_modules/node-pre-gyp/lib/pre-binding.js 20: 22-48 Критическая зависимость: запрос зависимости является выражением

ПРЕДУПРЕЖДЕНИЕ в ./node_modules/@domino/domino-db/node_modules/grpc/node_modules/node-pre-gyp/lib/util/versioning.js 17: 20-67 Критическая зависимость: запрос зависимости является выражением

ПРЕДУПРЕЖДЕНИЕ в ./node_modules/@domino/domino-db/node_modules/grpc/node_modules/minimatch/minimatch.js Модуль не найден: Ошибка: не удается разрешить «путь» в '/ Users /… / node_modules / @ domino / domino -db / node_modules / grpc / node_modules / minimatch '

ОШИБКА в ./node_modules/@domino/domino-db/node_modules/grpc/node_modules/detect-libc/lib/detect-libc.js Модуль не найден: Ошибка: не удается разрешить 'child_process' в '/… / node_modules / @ domino / domino-db / node_modules / grpc / node_modules / detect-libc / lib 'Ошибка: не удается разрешить' путь 'в' /Users/.../node_modules/@domino/domino-db/node_modules/grpc/ node_modules / minimatch 'ОШИБКА в ./node_modules/@domino/domino-db/node_modules/grpc/node_modules/detect-libc/lib/detect-libc.js Модуль не найден: Ошибка: не удается разрешить' child_process 'в' / Пользователи /.../ node_modules / @ domino / domino-db / node_modules / grpc / node_modules / detect-libc / lib 'ОШИБКА в модуле ./node_modules/@domino/domino-db/node_modules/grpc/src/client.js не найден: Ошибка: не удается разрешить 'поток' в '/Users/.../node_modules/@domino/domino-db/node_modules/grpc/src'


person dregos    schedule 22.02.2019    source источник
comment
Эта ошибка не выглядит знакомой. Какую версию Node вы используете? domino-db был протестирован с Node 8.x.   -  person Dave Delay    schedule 22.02.2019
comment
У меня есть вопрос и несколько комментариев по поводу вашего кода. Почему требуется для domino-db использовать относительный путь? Ваш вызов this.database.bulkReadDocuments должен быть выполнен во время обещания useServer. Все наши функции асинхронны, поэтому их нужно ждать или связывать как обещания. Точно так же вы также должны дождаться this.database.bulkReadDocuments, прежде чем использовать coll. Я бы не стал делать это в конструкторе, потому что он не может быть асинхронным, поэтому вам нужно использовать цепочку обещаний (по крайней мере, для вызова useServer).   -  person ddumont    schedule 22.02.2019
comment
Кроме того, вы пытаетесь запаковать этот код через Интернет?   -  person ddumont    schedule 22.02.2019
comment
По поводу моего кода. Я особо не уделял этому внимания. Я действительно был просто разочарован установкой. Я пробовал с Node 11, 10 и 8.14. Ничего не получилось. Однако я попробую переустановить npm и node и сделаю все с нуля.   -  person dregos    schedule 22.02.2019
comment
Что вы имеете в виду под веб-пакетом?   -  person dregos    schedule 22.02.2019
comment
Вопрос Дэна о веб-пакете на самом деле заключается в том, выполняется ли код, вызывающий domino-db, в 1) браузере или 2) во время выполнения Node.js. Поскольку вы упомянули Angular, я подозреваю, что он работает в браузере. Пакет domino-db действительно предназначен для среды выполнения Node.js.   -  person Dave Delay    schedule 23.02.2019
comment
ааа .. я понимаю. Имеет смысл ... Может быть, у вас есть пример, как я могу использовать это в приложении angular, чтобы оно работало во время выполнения node.js?   -  person dregos    schedule 23.02.2019
comment
Хорошо, теперь я понял. Мне нужно что-то для связи на сервере. Нравится Экспресс.   -  person dregos    schedule 24.02.2019


Ответы (1)


Критическая зависимость: запрос зависимости - это выражение

Из сообщения об ошибке видно, что вы пытаетесь его запаковать. Мы не поддерживаем запуск domino-db на веб-странице. Даже если вы справитесь с этой ошибкой, domino-db не сможет загрузиться в этой среде, потому что она небезопасна.

Domino-db в производственной безопасной среде требует учетных данных клиента для входа в систему. Это не то, что вы хотите отображать на странице браузера.

person ddumont    schedule 22.02.2019
comment
Не могли бы вы объяснить, что такое веб-упаковка и как я пытаюсь это сделать? Я не эксперт по NodeJS и Angular. - person dregos; 22.02.2019
comment
Представьте, что ваше приложение имеет три логических уровня: 1) веб-интерфейс Angular, 2) REST API и 3) база данных Domino. Первый уровень работает в браузере. Он представляет собой представление модели приложения, но манипулирует моделью, вызывая REST API среднего уровня. Средний уровень - это сервер Node.js (возможно, использующий Express), который реализует специфичный для модели REST API. Он использует domino-db для хранения данных в базе данных Domino. Я полагаю, вы начали с руководства по Angular и случайно объединили представление и модель на одном уровне. Можете ли вы попробовать перенести domino-db на сервер Node.js? - person Dave Delay; 23.02.2019
comment
Я понимаю. Спасибо за помощь. В основном моя логика была отключена. Подумать только, я уже делал такие архитектуры. Просто не соединил точки. Я подумал, что domino-db - это клиентская библиотека для связи с domino. Я попытаюсь создать сервер Express node.js, на котором будет запускаться @ domino-db, а затем связываться с ним через HTTP-запросы. Или есть лучший способ местного развития? - person dregos; 24.02.2019
comment
Это неплохое начало. У нас есть немало внутренних примеров такого рода вещей. Я бы хотел иметь возможность сделать некоторые из них с открытым исходным кодом. Работаем над этим. (Юристы;) - person ddumont; 25.02.2019