-
| 
         Hi there, would like some assistance in creating a model ref. Based on some previous discussion I was able to make this example but I thin I'm missing some service override, I'm getting this error:  This this my full code is solidjs: import { initialize } from "vscode/services";
import * as monaco from "monaco-editor";
import * as vscode from "vscode";
import getEditorServiceOverride from "@codingame/monaco-vscode-editor-service-override";
import getLanguageServiceOverride from "@codingame/monaco-vscode-languages-service-override";
import getTextmateServiceOverride from "@codingame/monaco-vscode-textmate-service-override";
import getThemeServceOverride from "@codingame/monaco-vscode-theme-service-override";
import getModelServiceOverride from "@codingame/monaco-vscode-model-service-override";
import getLanguageDetectionWorkerServiceOverride from "@codingame/monaco-vscode-language-detection-worker-service-override";
import {
  RegisteredFileSystemProvider,
  RegisteredMemoryFile,
  registerFileSystemOverlay,
} from "@codingame/monaco-vscode-files-service-override";
import "@codingame/monaco-vscode-json-default-extension";
import { createEffect, onCleanup } from "solid-js";
export type WorkerLoader = () => Worker;
function App() {
  createEffect(async () => {
    const workerLoaders: Partial<Record<string, WorkerLoader>> = {
      editorWorkerService: () =>
        new Worker(
          new URL(
            "monaco-editor/esm/vs/editor/editor.worker.js",
            import.meta.url,
          ),
          { type: "module" },
        ),
    };
    window.MonacoEnvironment = {
      getWorker: function (moduleId, label) {
        const workerFactory = workerLoaders[label];
        if (workerFactory != null) {
          return workerFactory();
        }
        throw new Error(`Unimplemented worker ${label} (${moduleId})`);
      },
    };
    const fileSystemProvider = new RegisteredFileSystemProvider(false);
    fileSystemProvider.registerFile(
      new RegisteredMemoryFile(
        vscode.Uri.file("/tmp/test.js"),
        `// import anotherfile
let variable = 1
function inc () {
  variable++
}
while (variable < 5000) {
  inc()
  console.log('Hello world', variable);
}`,
      ),
    );
    registerFileSystemOverlay(1, fileSystemProvider);
    // Call it once before doing anything else
    await initialize({
      ...getEditorServiceOverride(),
      ...getTextmateServiceOverride(),
      ...getModelServiceOverride(),
      ...getThemeServceOverride(),
      ...getLanguageServiceOverride(),
      ...getLanguageDetectionWorkerServiceOverride(),
    });
    const modelRef = await monaco.editor.createModelReference(
      monaco.Uri.parse("file:///tmp/test.js"),
      JSON.stringify({ hello: "world" }, null, 2),
    );
    const editor = monaco.editor.create(document.getElementById("editor")!, {
      language: "json",
      model: modelRef.object.textEditorModel,
    });
    registerFileSystemOverlay(1, fileSystemProvider);
    onCleanup(() => {
      modelRef.dispose();
      editor.dispose();
    });
  });
  return <div id="editor"></div>;
}
export default App; | 
  
Beta Was this translation helpful? Give feedback.
Replies: 2 comments 15 replies
-
| 
         I've just tried your code (with just a little changes): import { initialize } from "vscode/services";
import * as monaco from "monaco-editor";
import * as vscode from "vscode";
import getEditorServiceOverride from "@codingame/monaco-vscode-editor-service-override";
import getLanguageServiceOverride from "@codingame/monaco-vscode-languages-service-override";
import getTextmateServiceOverride from "@codingame/monaco-vscode-textmate-service-override";
import getThemeServceOverride from "@codingame/monaco-vscode-theme-service-override";
import getModelServiceOverride from "@codingame/monaco-vscode-model-service-override";
import getLanguageDetectionWorkerServiceOverride from "@codingame/monaco-vscode-language-detection-worker-service-override";
import {
  RegisteredFileSystemProvider,
  RegisteredMemoryFile,
  registerFileSystemOverlay,
} from "@codingame/monaco-vscode-files-service-override";
import "@codingame/monaco-vscode-json-default-extension";
export type WorkerLoader = () => Worker;
const workerLoaders: Partial<Record<string, WorkerLoader>> = {
  editorWorkerService: () =>
    new Worker(
      new URL(
        "monaco-editor/esm/vs/editor/editor.worker.js",
        import.meta.url,
      ),
      { type: "module" },
    ),
};
window.MonacoEnvironment = {
  getWorker: function (moduleId, label) {
    const workerFactory = workerLoaders[label];
    if (workerFactory != null) {
      return workerFactory();
    }
    throw new Error(`Unimplemented worker ${label} (${moduleId})`);
  },
};
const fileSystemProvider = new RegisteredFileSystemProvider(false);
fileSystemProvider.registerFile(
  new RegisteredMemoryFile(
    vscode.Uri.file("/tmp/test.js"),
    `// import anotherfile
let variable = 1
function inc () {
variable++
}
while (variable < 5000) {
inc()
console.log('Hello world', variable);
}`,
  ),
);
registerFileSystemOverlay(1, fileSystemProvider);
// Call it once before doing anything else
await initialize({
  ...getEditorServiceOverride(async () => {
    return undefined
  }),
  ...getTextmateServiceOverride(),
  ...getModelServiceOverride(),
  ...getThemeServceOverride(),
  ...getLanguageServiceOverride(),
  ...getLanguageDetectionWorkerServiceOverride(),
});
const modelRef = await monaco.editor.createModelReference(
  monaco.Uri.parse("file:///tmp/test.js")
);
 monaco.editor.create(document.getElementById("editor")!, {
  language: "json",
  model: modelRef.object.textEditorModel,
});and I'm unable to reproduce any issue, can your please provide a reproduction repo?  | 
  
Beta Was this translation helpful? Give feedback.
-
| 
         It looks like the issue occurs when packages are installed from different versions, once I've deleted pnpm-lock.yaml and did a clean install it works, I had some packages from 6.0.0, some 6.0.1 and some 6.0.2, once they were all in sync it worked. Again appreciate the help and thanks for this amazing project. God bless.  | 
  
Beta Was this translation helpful? Give feedback.
It looks like the issue occurs when packages are installed from different versions, once I've deleted pnpm-lock.yaml and did a clean install it works, I had some packages from 6.0.0, some 6.0.1 and some 6.0.2, once they were all in sync it worked.
Again appreciate the help and thanks for this amazing project. God bless.