Проблема зависимостей редактора Монако

Всякий раз, когда я запускаю Monaco Editor (с node.js), он появляется и, кажется, работает нормально, но я получаю сообщение об ошибке, сообщающее, что отсутствуют зависимости, и проверяю список. Кажется, я не могу найти список зависимостей (я установил через NPM), но я точно знаю, что модуль node.js fs включен.

Сообщение об ошибке:

Uncaught Error: Check dependency list! Synchronous require cannot resolve module 'fs'. This is the first mention of this module!
at s.synchronousRequire (loader.js:27)
at s (loader.js:34)
at /Library/Application Support/rack/node_modules/monaco-edit…:7
at /Library/Application Support/rack/node_modules/monaco-edit…:7
at ts (/Library/Application Support/rack/node_modules/monaco-edit…:7)
at /Library/Application Support/rack/node_modules/monaco-edit…:7
at t._loadAndEvalScript (loader.js:20)
at loader.js:19
at tryToString (VM1651 fs.js:449)
at FSReqWrap.readFileAfterClose [as oncomplete] (VM1651 fs.js:436)

Использование:

    <script src="node_modules/monaco-editor/min/vs/loader.js"></script>
<script>
require.config({ paths: { 'vs': __dirname + '/node_modules/monaco-editor/min/vs' }});
require(['vs/editor/editor.main'], function() {
    var editor = monaco.editor.create(document.getElementById('container'), {
        value: [
            'function x() {',
            '\tconsole.log("Hello world!");',
            '}'
        ].join('\n'),
        language: 'javascript'
    });
});
</script>

Кто-нибудь еще сталкивался с этой проблемой? Спасибо!

1 ответ

Решение

Похоже, что функция getNodeSystem() в vs/language/typescript/typescriptServices.js пытается запросить базовые модули Node, но если они у вас уже есть, она выдаст ошибку.

Вид хакерского решения, но пока работает - заменить их определения уже определенными версиями. Если у кого-то есть лучшее решение, дайте мне знать. cc @estus

function getNodeSystem() {
            // var _fs = require("fs");
            // var _path = require("path");
            // var _os = require("os");
            var _fs = fs;
            var _path = path;
            var _os = os; 
            [...]
}
Другие вопросы по тегам