Ссылка на статический файл JSON

#docusaurus

#docusaurus

Вопрос:

В Docusaurus V2 как создать ссылку на файл JSON в статической папке?

Я попробовал следующее в файле markdown:

 An exemple, is the following [JSON dataset](../../static/data/solar-radiation.json).
 

Но Docusaurus затем выдает следующую ошибку:

 ./static/data/solar-radiation.json (./node_modules/file-loader/dist/cjs.js?name=assets/files/[name]-[hash].[ext]!./static/data/solar-radiation.json)
Module parse failed: Unexpected token e in JSON at position 0 while parsing near 'export default __web...'
File was processed with these loaders:
 * ./node_modules/file-loader/dist/cjs.js
You may need an additional loader to handle the result of these loaders.
SyntaxError: Unexpected token e in JSON at position 0 while parsing near 'export default __web...'
    at JSON.parse (<anonymous>)
 

Мой файл является допустимым JSON. По какой-то причине вместо отображения статического файла Docusaurus, похоже, пытается его проанализировать…

Ответ №1:

Я видел ту же проблему. Мое временное решение:

  • Изменить имя файла с .md на .mdx
  • Добавьте эту ссылку в свой файл json
 <a target="_blank" href="/json/file.json" download="file.json">Download</a>
 

Ответ №2:

У меня тоже была такая же проблема!

Согласно выпуску # 3561 на Docusaurus GitHub, по словам одного из разработчиков, в настоящее время наилучшей практикой является использование pathname:// префикса перед вашим URL. Чтобы использовать ваш пример:

 An exemple, is the following
[JSON dataset](pathname://../../static/data/solar-radiation.json).
 

По-видимому, причина, по которой это происходит, заключается в том, что существует конфликт между babel-loader (используется для загрузки кода) и file-loader (используется для загрузки статических ресурсов). pathname:// Префикс пропускает оба этих загрузчика и вместо этого просто создает ссылку.