typescript - 在取消注释方法中未使用的部分代码后,Monaco 网页编辑器无法工作
我尝试在 Monaco 网络编辑器上添加建议,但遇到了一个非常奇怪的问题。考虑这个类:
import { ExpressionContext } from "../ANTLR/ExpressionsParserGrammarParser";
import * as monaco from "monaco-editor-core";
import { ILanguageError } from "../todo-lang/ILanguageError";
import { calcFormatted } from "../todo-lang/FormatterVisitor";
import { parseAndGetASTRoot, parseAndGetSyntaxErrors } from "../todo-lang/parser";
export default class TodoLangLanguageService {
validate(code: string): ILanguageError[] {
const syntaxErrors: ILanguageError[] = parseAndGetSyntaxErrors(code);
const ast: ExpressionContext = parseAndGetASTRoot(code);
return syntaxErrors;//.concat(checkSemanticRules(ast));
}
format(code: string): string {
return calcFormatted(code).value
}
autoSuggest(code: string, line: number, charPosInLine: number): monaco.languages.CompletionList {
const syntaxErrors: ILanguageError[] = parseAndGetSyntaxErrors(code);
let completeonItems: Array<monaco.languages.CompletionItem> = syntaxErrors.filter(err => err.startLineNumber == line && err.startColumn == charPosInLine).map(e => {
let ci: monaco.languages.CompletionItem = {
label: e.message,
/**
* The kind of this completion item. Based on the kind
* an icon is chosen by the editor.
*/
kind: monaco.languages.CompletionItemKind.Field,
insertText: e.message,
range: {
/**
* Line number on which the range starts (starts at 1).
*/
startLineNumber: e.startLineNumber,
/**
* Column on which the range starts in line `startLineNumber` (starts at 1).
*/
startColumn: e.startColumn,
/**
* Line number on which the range ends.
*/
endLineNumber: e.endLineNumber,
/**
* Column on which the range ends in line `endLineNumber`.
*/
endColumn: e.endColumn
}
}
return ci;
})
let ci:monaco.languages.CompletionList={
suggestions:completeonItems
}
return ci;
}
}
方法 "autosuggest" 没有在源代码中使用(我已经将其注释掉)。问题是 Monaco Web 编辑器无法处理语言功能——语法着色、格式化和错误高亮。
但是如果我把自动建议方法改成如下,一切都能正常工作,当然没有建议:
autoSuggest(code: string, line: number, charPosInLine: number): monaco.languages.CompletionList {
const syntaxErrors: ILanguageError[] = parseAndGetSyntaxErrors(code);
let ci:monaco.languages.CompletionList={
suggestions:[]
}
return ci;
}
我的 package.json 如下:
{
"name": "todolangeditor",
"version": "1.0.0",
"description": "TodoLang editor",
"scripts": {
"start": "webpack-dev-server --hot --open",
"antlr4ts": "antlr4ts ./ExpressionsParserGrammar.g4 -visitor -o ./src/ANTLR"
},
"author": "Open",
"license": "ISC",
"dependencies": {
"antlr4ts": "^0.5.0-alpha.3",
"monaco-editor-core": "^0.18.1",
"react": "^16.8.6",
"react-dom": "^16.8.6"
},
"devDependencies": {
"@types/react": "^16.8.12",
"@types/react-dom": "^16.8.3",
"antlr4ts-cli": "^0.5.0-alpha.3",
"css-loader": "^3.3.0",
"html-webpack-plugin": "^3.2.0",
"style-loader": "^1.0.1",
"ts-loader": "^5.3.3",
"typescript": "^3.4.2",
"webpack": "^4.29.6",
"webpack-cli": "^3.3.0",
"webpack-dev-server": "^3.2.1"
}
}
当我运行 npm install 时,我得到以下日志,有几个警告但没有错误:
npm 警告 已弃用 [email :v3.0.1 已修复关键漏洞,请升级到最新版本。npm 警告 已弃用 [email :v3.0.1 已修复关键漏洞,请升级到最新版本。npm 警告 已弃用 [email :请参阅 https://github.com/lydell/urix#deprecated npm 警告 已弃用 [email :Chokidar 2 自 2019 起不再接收安全更新。请升级到依赖减少 15 倍的 Chokidar 3 npm 警告 已弃用 [email :Chokidar 2 自 2019 起不再接收安全更新。请升级到依赖减少 15 倍的 Chokidar 3 npm 警告 已弃用 [email :https://github. com/lydell/resolve-url#已弃用 npm 警告 已弃用 [email :请参见 https://github.com/lydell/source-map-url#deprecated npm 警告 已弃用 [email :3.x 不再受支持 npm 警告 已弃用 [email :querystring API 被认为是旧的。新代码应改用 URLSearchParams API。 npm 警告 已弃用 [email :请升级到版本 7 或更高版本。旧版本在某些情况下可能使用 Math.random(),这已知存在问题。详情请参见 https://v8.dev/blog/math-random npm 警告 已弃用 [email :请参见 https://github.com/lydell/source-map-resolve#deprecated
添加了 726 个软件包,并在 4 秒内审计了 727 个软件包
有 63 个包正在寻求资金支持 运行
npm fund获取详情17 个漏洞(1 个中等,8 个高,8 个严重)
要解决不需要注意的问题,请运行:npm audit fix
要解决所有问题(包括重大更改),请运行:npm audit fix --force
运行
npm audit获取详细信息。
如何解决这个问题?