I went to build the example folder, edited the files as below but at runtime, I'm getting this error:
Uncaught (in promise) Error: Unexpected usage
at EditorSimpleWorker.loadForeignModule (editor.worker.bundle.js:8995)
at SimpleWorkerServer._handleMessage (editor.worker.bundle.js:6629)
at Object.handleMessage (editor.worker.bundle.js:6615)
at SimpleWorkerProtocol._handleMessage (editor.worker.bundle.js:6484)
at SimpleWorkerProtocol.handleMessage (editor.worker.bundle.js:6457)
at SimpleWorkerServer.onmessage (editor.worker.bundle.js:6619)
at self.onmessage (editor.worker.bundle.js:10166)
errors.js:8 Uncaught Error: Unexpected usage
Error: Unexpected usage
at EditorSimpleWorker.loadForeignModule (editor.worker.bundle.js:8995)
at SimpleWorkerServer._handleMessage (editor.worker.bundle.js:6629)
at Object.handleMessage (editor.worker.bundle.js:6615)
at SimpleWorkerProtocol._handleMessage (editor.worker.bundle.js:6484)
at SimpleWorkerProtocol.handleMessage (editor.worker.bundle.js:6457)
at SimpleWorkerServer.onmessage (editor.worker.bundle.js:6619)
at self.onmessage (editor.worker.bundle.js:10166)
web config is basically unedited except to add the mode in exports:
/* --------------------------------------------------------------------------------------------
* Copyright (c) 2018 TypeFox GmbH (http://www.typefox.io). All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
* ------------------------------------------------------------------------------------------ */
const path = require('path');
const lib = path.resolve(__dirname, "lib");
const webpack = require('webpack');
const {merge} = require('webpack-merge');
const UglifyJSPlugin = require('uglifyjs-webpack-plugin');
const common = {
entry: {
"main": path.resolve(lib, "main.js"),
"editor.worker": 'monaco-editor/esm/vs/editor/editor.worker.js'
},
output: {
filename: '[name].bundle.js',
path: lib
},
module: {
rules: [{
test: /\.css$/,
use: ['style-loader', 'css-loader']
},
{
test: /\.ttf$/,
use: ['file-loader']
}]
},
target: 'web',
node: {
fs: 'empty',
child_process: 'empty',
net: 'empty',
crypto: 'empty'
},
resolve: {
alias: {
'vscode': require.resolve('@codingame/monaco-languageclient/lib/vscode-compatibility')
},
extensions: ['.js', '.json', '.ttf']
}
};
if (process.env['NODE_ENV'] === 'production')
{
module.exports = merge(common, {
plugins: [
new UglifyJSPlugin(),
new webpack.DefinePlugin({
'process.env.NODE_ENV': JSON.stringify('production')
})
],
mode: 'production'
});
}
else
{
module.exports = merge(common, {
devtool: 'source-map',
mode: 'development',
module: {
rules: [{
test: /\.js$/,
enforce: 'pre',
loader: 'source-map-loader',
// These modules seems to have broken sourcemaps, exclude them to prevent an error flood in the logs
exclude: [/vscode-jsonrpc/, /vscode-languageclient/, /vscode-languageserver-protocol/]
}]
}
})
}
the moedified files from example folder goes as the following:
client.ts
import { MessageConnection } from 'vscode-jsonrpc';
import { listen } from '@codingame/monaco-jsonrpc';
import * as monaco from 'monaco-editor'
import {
MonacoLanguageClient, CloseAction, ErrorAction,
MonacoServices, createConnection
} from '@codingame/monaco-languageclient'
import normalizeUrl = require('normalize-url')
const ReconnectingWebSocket = require('reconnecting-websocket')
// register Monaco languages
monaco.languages.register({
id: 'typescript',
extensions: ['.ts'],
aliases: ['TypeScript','ts','TS','Typescript','typescript']
})
// create Monaco editor
const value = `
let message:string = 'foo!'
`;
monaco.editor.create(document.getElementById("container")!, {
model: monaco.editor.createModel(value, 'typescript', monaco.Uri.parse('file:///C:\\Users\\jackjj\\Desktop\\project\\demo\\ts\\file.ts')),
glyphMargin: true,
theme: "vs-dark",
lightbulb: {
enabled: true
}
})
// install Monaco language client services
MonacoServices.install(monaco, {rootUri: "file:///C:\\Users\\jackjj\\Desktop\\project\\demo\\ts\\"})
// create the web socket
const url = createUrl('ws://localhost:3000/ts')
const webSocket = createWebSocket(url)
// listen when the web socket is opened
listen({
webSocket,
onConnection: connection => {
// create and start the language client
const languageClient = createLanguageClient(connection);
const disposable = languageClient.start();
connection.onClose(() => disposable.dispose());
}
});
function createLanguageClient(connection: MessageConnection): MonacoLanguageClient {
return new MonacoLanguageClient({
name: "Sample Language Client",
clientOptions: {
// use a language id as a document selector
documentSelector: ['typescript'],
// disable the default error handler
errorHandler: {
error: () => ErrorAction.Continue,
closed: () => CloseAction.DoNotRestart
}
},
// create a language client connection from the JSON RPC connection on demand
connectionProvider: {
get: (errorHandler, closeHandler) => {
return Promise.resolve(createConnection(connection, errorHandler, closeHandler))
}
}
});
}
function createUrl(path: string): string {
return normalizeUrl(path);
}
function createWebSocket(url: string): WebSocket {
const socketOptions = {
maxReconnectionDelay: 10000,
minReconnectionDelay: 1000,
reconnectionDelayGrowFactor: 1.3,
connectionTimeout: 10000,
maxRetries: Infinity,
debug: false
};
return new ReconnectingWebSocket(url, [], socketOptions);
}
main.ts
/* --------------------------------------------------------------------------------------------
* Copyright (c) 2018 TypeFox GmbH (http://www.typefox.io). All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
* ------------------------------------------------------------------------------------------ */
export { }
require('monaco-editor');
(self as any).MonacoEnvironment = {
getWorkerUrl: () => './editor.worker.bundle.js'
}
require('./client');
server.ts
import * as express from "express";
const app = express();
app.use(express.static(__dirname));
app.listen(4200);
What's that error and how can I fix it?
I went to build the example folder, edited the files as below but at runtime, I'm getting this error:
web config is basically unedited except to add the mode in exports:
the moedified files from example folder goes as the following:
client.ts
main.ts
server.ts
What's that error and how can I fix it?