Как загрузить отдельный файл по запросу?

Я использую редактор Monaco в качестве редактора JSON и проверки схемы. Я знаю, как добавить проверку пользовательской схемы в код. Следуя официальной документации: https://microsoft.github.io/monaco-editor/playground.html#exnding-language-services-configure-json-defaults

Но я хочу загрузить схему из внешнего файла, чтобы код выглядел так:

const schema = require('../../../samples/spec-schema.json')

<MonacoEditor height='100%' width='100%'
               language='json'
               theme='vs-dark'
               value={this.state.json}
               onChange={newValue => this.setState(s => Entity(s).set('json', _ => newValue).commit())}
               editorWillMount={monaco => {
                            monaco.languages.json.jsonDefaults.setDiagnosticsOptions({
                                validate: true, 
                                schemas: [{
                                    uri: '../../../samples/spec-schema.json',
                                    schema: schema
                                }]
                            })
                        }}
                    />

Я использую React с Webpack, я думаю, что должен быть способ загрузить схему с помощью webpack, а затем передать ее редактору Monaco, но я не знаю, как это сделать.


person Community    schedule 20.04.2020    source источник
comment
Итак, ваш вопрос не имеет ничего общего со схемой JSON, а скорее является общим «как динамически загружать файл»? Тогда, возможно, стоит перефразировать, чтобы получить больше потенциальных ответов.   -  person Carsten    schedule 20.04.2020
comment
Какова мотивация предоставления содержимого файла как schema переменной и его (локальной) uri одновременно? Тогда разве uri не лишний?   -  person Carsten    schedule 21.04.2020
comment
@Carsten кажется разумным редактированием, я думаю, что могу найти решение, просто погуглил, как импортировать файл JSON с помощью webpack. Иногда бывает сложно в какую сторону смотреть. ;)   -  person    schedule 21.04.2020


Ответы (1)


Я решил эту проблему, включив enableSchemaRequest: true и разместив свою схему JSON в Интернете в GitHub Gist. Просто добавьте $schema: "https://gist.githubusercontent.com/my-schema.json" в верхнюю часть редактора, как в VS Code.

monaco.languages.json.jsonDefaults.setDiagnosticsOptions({
     enableSchemaRequest: true
 })
person Community    schedule 21.04.2020