MedusaJs с ошибкой выполнения команды по умолчанию Strapi — ApplicationError: требуется тип

Я настраиваю medusaJS с помощью команды Strapi по умолчанию https://docs.medusajs.com/plugins/cms/strapi

Я настроил Redis, medusa cli, использовал Node версии 16,18. Однако у меня возникла эта проблема

      Now using node v18.13.0 (npm v8.19.3)
❯ npx create-strapi-app strapi-medusa --template shahednasser/strapi-medusa-template
? Choose your installation type Quickstart (recommended)
Creating a quickstart project.
Creating a new Strapi application at /Users/felixle/Downloads/6github_new/strapi-medusa.
Creating files.
Installing strapi-medusa-template template.
Dependencies installed successfully.
Initialized a git repository.


Your application was created at /Users/felixle/Downloads/6github_new/strapi-medusa.

Available commands in your project:

  yarn develop
  Start Strapi in watch mode. (Changes in Strapi project files will trigger a server restart)

  yarn start
  Start Strapi without watch mode.

  yarn build
  Build Strapi admin panel.

  yarn strapi
  Display all available commands.

You can start by doing:

  cd /Users/felixle/Downloads/6github_new/strapi-medusa
  yarn develop

Running your Strapi application.

> strapi-medusa@0.1.0 develop
> strapi develop

Building your admin UI with development configuration...
Admin UI built successfully
ApplicationError: The type is required
    at getFieldSize (/Users/felixle/Downloads/6github_new/strapi-medusa/node_modules/@strapi/plugin-content-manager/server/services/field-sizes.js:57:15)
    at getDefaultFieldSize (/Users/felixle/Downloads/6github_new/strapi-medusa/node_modules/@strapi/plugin-content-manager/server/services/utils/configuration/layouts.js:34:10)
    at appendToEditLayout (/Users/felixle/Downloads/6github_new/strapi-medusa/node_modules/@strapi/plugin-content-manager/server/services/utils/configuration/layouts.js:139:27)
    at createDefaultEditLayout (/Users/felixle/Downloads/6github_new/strapi-medusa/node_modules/@strapi/plugin-content-manager/server/services/utils/configuration/layouts.js:56:10)
    at createDefaultLayouts (/Users/felixle/Downloads/6github_new/strapi-medusa/node_modules/@strapi/plugin-content-manager/server/services/utils/configuration/layouts.js:40:11)
    at createDefaultConfiguration (/Users/felixle/Downloads/6github_new/strapi-medusa/node_modules/@strapi/plugin-content-manager/server/services/utils/configuration/index.js:26:20)
    at async generateNewConfiguration (/Users/felixle/Downloads/6github_new/strapi-medusa/node_modules/@strapi/plugin-content-manager/server/services/configuration.js:53:36)
    at async Promise.all (index 13)
    at async Object.syncConfigurations (/Users/felixle/Downloads/6github_new/strapi-medusa/node_modules/@strapi/plugin-content-manager/server/services/configuration.js:67:5)
    at async module.exports [as bootstrap] (/Users/felixle/Downloads/6github_new/strapi-medusa/node_modules/@strapi/plugin-content-manager/server/bootstrap.js:7:3) {
  details: {}
}

Не могли бы вы мне помочь?

Спасибо

Проект может работать

3 ответа

Как предположили другие, это не имеет ничего общего с исходным кодом Медузы как таковой. Проблема, с которой вы столкнулись, — это отсутствие поля типа в схеме.

Эта часть кода, из которой вы получаете ошибку, анализирует файлы Schema.json в папках типов контента в src/api/[имя-типа-контента]/content-types/[имя-типа-контента] . В конкретном выбранном вами шаблоне вы заметите, что не все атрибуты в файлах схемы.json имеют поле типа.

Strapi v4 внес серьезные изменения в структуру схемы. Некоторые миграции на версию 4 могут быть применены автоматически, как это произошло с shahednasser/strapi-medusa-template. Но некоторые из них создаются вручную и не были применены к этому каталогу. Вам нужно перенести остальные изменения в файлах схемы в новый формат Strapi v4s и все должно работать.

Для справки, вот фрагмент типа контента поставщика платежей в версии 3, а затем в версии 4.

версия 3:

      "regions": {
      "via": "payment_providers",
      "collection": "region"
    }

версия 4:

      "regions": {
      "type": "relation",
      "relation": "manyToMany",
      "target": "api::region.region",
      "inversedBy": "payment_providers"
    }

Некоторые люди уже это сделали, поэтому я взял файлы схемы из этого репозитория и написал простой Python-скрипт для замены всех файлов из упомянутого репозитория на шаблон от shahednasser:

      import os
import shutil

# Define the source directory where the new schema.json files are located
source_dir = "src/api"

# Define the target directory where the existing schema.json files are located which should be replaced
target_dir = "strapi-medusa/src/api"

# Iterate over all the subdirectories in the target directory
for subdir, dirs, files in os.walk(target_dir):
    for file in files:
        # Check if the current file is a schema.json file
        if file == "schema.json":
            # Define the path to the current schema.json file
            current_file_path = os.path.join(subdir, file)

            # Extract the name of the content-type
            content_type_name = os.path.basename(os.path.dirname(os.path.dirname(subdir)))

            # Define the path to the new schema.json file
            new_file_path = os.path.join(source_dir, content_type_name, "content-types", content_type_name, file)

            # Check if the new schema.json file exists
            if os.path.exists(new_file_path):
                # Replace the current schema.json file with the new one
                shutil.copy(new_file_path, current_file_path)
                print(f"Replaced {current_file_path} with {new_file_path}")

Если у вас есть еще вопросы, я рад на них ответить.

РЕДАКТИРОВАТЬ: Сделал проблему и то, что нужно сделать, немного яснее.

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

Я форматирую данные с помощью функции, а затем импортирую результат в базу данных postgres.

Итак, если вам нужна дополнительная помощь, пожалуйста, сообщите мне.

Наилучшие пожелания

Я сделал форк, который должен исправить эту проблему (и некоторые другие проблемы). Вы можете найти это здесь:

https://github.com/thomcrielaard/strapi-medusa-template.git

Если у вас есть какие-либо проблемы, не стесняйтесь сообщать о них! :)

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