ArangoDB: начало работы с Foxx Microservices: 404: errorMessage: неизвестный путь

Используя документацию ArangoDB версия 3.3 или версия 3.4 для раздела «Начало работы» микросервисов Foxx, я не могу обойти эту ошибку:

Failed to load API definition.

NetworkError when attempting to fetch resource. http://192.168.1.1:8529/_db/_system/_admin/aardvark/foxxes/docs/swagger.json?mount=/getting-started

Эта ошибка отображается на вкладке API службы. После установки службы в соответствии с инструкциями я получаю карточку службы, как описано. Я щелкаю эту карточку, а затем щелкаю вкладку API, и отображается указанная выше ошибка.

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

Вкладка Информация моей недавно созданной службы getting-started содержит эту информацию:

Author:
Mount: /getting-started
Mode: Development
Version: Unknown
Version License: Unknown License
Path: /var/lib/arangodb3-apps/_db/_system/getting-started/APP

В примере всего два файла:

manifest.json

{
  "engines": {
    "arangodb": "^3.0.0"
  },
  "main": "index.js"
}

index.js

'use strict';
const createRouter = require('@arangodb/foxx/router');
const router = createRouter();

module.context.use(router);

router.get('/hello-world', function (req, res) {
res.send('Hello World!');
})
.response(['text/plain'], 'A generic greeting.')
.summary('Generic greeting')
.description('Prints a generic greeting.');

Готовые демонстрационные сервисы, такие как пример hello-fox, работают правильно. Я собрал дополнительную информацию об ошибке:

Переход к http://192.168.1.1:8529/getting-started

404: errorMessage "unknown path '/getting-started'"

Переход к http://192.168.1.1:8529/_db/_system/getting-started

404: errorMessage "unknown path '/getting-started'"

Консоль также показывает:

WARNING File not found "/getting-started": file "" does not exist in "/var/lib/arangodb3-apps/_db/_system/getting-started/APP/files".

В руководстве не указан другой файл с именем getting-started или другое расположение для двух указанных файлов. Что мне не хватает?

После появления сообщения об ошибке проверьте журналы в веб-интерфейсе (не забудьте обновить страницу, так как она не обновляется сама по себе). Есть ли там сообщение об ошибке?

camba1 18.12.2018 22:53

@ camba1 - спасибо. Моя ошибка: файл не найден "/ начало работы": файл "" не существует в "/ var / lib / arangodb3-apps / _db / _system / Getting-start / APP / fil‌ es".

BugBuddy 19.12.2018 00:42

Попробуйте добавить «main» в свой файл манифеста и указать его на index.js. Предполагая, что index.js находится в том же каталоге, что и ваш манифест, попробуйте: {"Engine": {"arangodb": "^ 3.0.0"}, "main": "index.js"} С точки зрения адреса конечной точки ваш сервис размещен на, это должно быть что-то вроде: http://localhost:8529/_db/_system/testService/hello-world

camba1 19.12.2018 01:17

@ camba1 - ArangoDB работает на локальном компьютере, и я могу получить доступ к веб-интерфейсу через 192.168.1.1:8529 нормально. Другие службы работают. Я снова добавил "main": "index.js". Я пробовал это раньше, но все равно получаю ту же ошибку. Что касается конечной точки, я пробовал http://192.168.1.1:8529/getting-started и http://192.168.1.1:8529/_db/_system/getting-started. Я не уверен насчет элемента пути testService в вашем комментарии, потому что ничто в учебнике не говорит мне создавать каталог в любом месте. Веб-интерфейс Arango устанавливает мой zip-файл здесь /var/lib/arangodb3-apps/_db/_system/getting-started/

BugBuddy 19.12.2018 01:27

В учебнике Аранго написано You will need to provide a mount path, which is the URL prefix at which the service will be mounted (e.g. /getting-started). Поэтому я использовал /getting-started. Однако теперь я замечаю, что у маршрутизатора есть путь, определенный как /hello-world. Изменение этого на / начало-начало` не устранило мою ошибку, но полное удаление пути исправило ее. Ясно, что я чего-то не понимаю в требуемых путях и конечных точках. Я смущен.

BugBuddy 19.12.2018 01:45

Извините за путаницу с конечной точкой, это был всего лишь пример. Для вас это будет 192.168.1.1:8529/_db/_system/getting-started/hello-world. Также я вижу службу в режиме разработки. Таким образом, сервис перезагружается каждый раз, когда вы его открываете. и вы можете изменять свои файлы прямо в / var / lib / arangodb3-apps / _db / _system / getting-started / вместо того, чтобы загружать новый zip-файл каждый раз, когда вы вносите изменения (не решает вашу проблему, но упрощает отладку ). Также журнал показывает настоящую ошибку. Как вы, наверное, уже догадались, в графическом интерфейсе сервиса отображается обычная ошибка.

camba1 19.12.2018 01:53

Ваш последний комментарий и некоторые эксперименты наконец прояснили это для меня. Вы хотите дать мне ответ, чтобы я согласился?

BugBuddy 19.12.2018 03:30
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
7
245
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Эта проблема была решена на основе полезных комментариев @ camba1. С Аранго проблем не было, просто проблема с пониманием учебника. Для других, занимающих мое положение, вот вещи, которых я не понял должным образом, и когда к ним обратились, я решил мои проблемы.

  1. Вкладка API, в отличие от того, что говорится в руководстве, выдаст ошибку «Не удалось загрузить определение API» даже для правильно работающей службы. Игнорируйте это сообщение об ошибке. Я еще не использую вкладку API.

  2. в руководстве используются два пути: «/ hello-world» и «/ Getting-started». Они используются в конечной точке (URI) и при создании маршрутизатора, как показано ниже:

    router.get('/hello-world', function (req, res) { ...

Учебное пособие не было таким ясным, как могло бы быть по этому поводу, но, как указал @ camba1, конечная точка службы в конечном итоге будет включать оба этих элемента:

192.168.1.1:8529/_db/_system/getting-started/hello-world .
  1. эта очень простая демонстрация, на мой взгляд, проще и лучше, когда маршрутизатор создается без пути:

    router.get(function (req, res) {

В этом случае по умолчанию используется путь из '/'. Думаю, это поможет избежать путаницы для таких новичков, как я. Тогда конечная точка службы становится на один элемент проще. В моем случае конечная точка (когда Arango работает на другом компьютере в локальной сети) становится:

192.168.1.1:8529/_db/_system/getting-started

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

Для всех, кто это читал, я обновился с ArangoDB 3.3.19 до 3.4, и эти простые демонстрации, которые работали, больше не работают. Что-то в определении пути в router.get, похоже, изменилось.

BugBuddy 22.12.2018 04:39

Могу я спросить вас, @BugBuddy, как установить @ arangodb / foxx? Не нашел: npmjs.com/search?q=%40arangodb

Raphael10 03.12.2021 13:41

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