在未使用的方法中取消注释部分代码后,Monaco Web 编辑器无法正常工作

问题描述 投票:0回答:0

我尝试在 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 Editor 不处理语言功能——语法着色、格式化和错误突出显示。

但是如果我按照下面的方式更改自动建议方法,一切正常,当然没有建议:

 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 WARN deprecated [email protected]:在 v3.0.1 中修复了严重错误, 请升级到最新版本。 npm WARN 已弃用 [email protected]: v3.0.1修复严重bug,请升级到 最新版本。 npm WARN 已弃用 [email protected]:请参阅 https://github.com/lydell/urix#deprecated npm WARN 已弃用 [email protected]:Chokidar 2 没有收到安全更新,因为 2019. 升级到 chokidar 3,依赖性减少 15 倍 npm WARN deprecated [email protected]:Chokidar 2 没有获得安全性 自 2019 年以来的更新。升级到 chokidar 3,依赖项减少 15 倍 npm WARN 已弃用 [email protected]https://github.com/lydell/resolve-url#deprecated npm WARN 已弃用 [email protected]:见 https://github.com/lydell/source-map-url#deprecated npm 警告 已弃用的 [email protected]:不再支持 3.x npm WARN deprecated [email protected]: querystring API被认为是 遗产。新代码应该改用 URLSearchParams API。 npm 警告 已弃用 [email protected]:请升级到版本 7 或更高版本。年长的 版本可能在某些情况下使用 Math.random() ,这是 已知是有问题的。请参阅 https://v8.dev/blog/math-random 细节。 npm WARN 已弃用 [email protected]:请参阅 https://github.com/lydell/source-map-resolve#deprecated

4秒新增726个包,审核727个包

63包正在找funding run

npm fund
详情

17 个漏洞(1 个中等、8 个高、8 个严重)

解决不需要关注的问题,运行:npm audit fix

要解决所有问题(包括重大更改),请运行:npm audit 修复 --force

运行

npm audit
了解详情。

如何解决这个问题?

typescript npm-install antlr4 monaco-editor npm-start
© www.soinside.com 2019 - 2024. All rights reserved.