Angular2 Eclipse:Eclipse Oxygen中的HTML编辑器显示TypeScript中的错误

时间:2017-08-11 09:30:43

标签: eclipse angular typescript eclipse-plugin eclipse-oxygen

我已经为Eclipse Oxygen安装了Angular2 Eclipse插件。 我用角度CLI创建了一个angular2项目,然后在eclipse中打开了项目。

我尝试将项目转换为Angular项目,但是当我右键单击项目并转到配置时,没有这样的选项。唯一的选择是“配置和检测嵌套项目..”,这将打开导入向导。

当我在src / app /中打开html模板文件时...我的databinding.component.html, HTML编辑器显示丑陋的错误:

errors in html editor

当我将鼠标悬停在错误上时,我发现所有格式都是:

[ts] Cannot find name 'aNumber'. Did you mean 'Number'?
[ts] Cannot find name 'innerText'.
[ts] Cannot find name 'h4'.

一些例子:

var count = dataGridView1.Rows.Cast<DataGridViewRow>()
                     .Count( r => r.Cells[1].Value.ToString().Trim() == "4 - Urgent" );

但错误不正确。我可以毫无问题地使用ng-serve启动应用程序。

如何配置eclipse以便这些错误的错误消息消失? 谢谢:))

修改#1

这是我的eclipse打字稿配置,我看不出我在这里可以改变什么..

preferences

1 个答案:

答案 0 :(得分:6)

正如@Angelo所提到的,这个错误是已知的,并且有一个暂时的解决方法。

您需要转到此文件C:\Users\MyUser\eclipse-workspace\.metadata\.plugins\ts.repository\repositories\2.4.1\node_modules\typescript\lib\tsserver.js并查找此部分代码:

    Session.prototype.getDiagnosticsWorker = function (args, isSemantic, selector, includeLinePosition) {
        var _a = this.getFileAndProject(args), project = _a.project, file = _a.file;
        if (isSemantic && isDeclarationFileInJSOnlyNonConfiguredProject(project, file)) {
            return [];
        }
        var scriptInfo = project.getScriptInfoForNormalizedPath(file);
        var diagnostics = selector(project, file);
        return includeLinePosition
            ? this.convertToDiagnosticsWithLinePosition(diagnostics, scriptInfo)
            : diagnostics.map(function (d) { return formatDiag(file, project, d); });
    };

进入这一个:

    Session.prototype.getDiagnosticsWorker = function (args, isSemantic, selector, includeLinePosition) {
        var _a = this.getFileAndProject(args), project = _a.project, file = _a.file;
        if (isSemantic && isDeclarationFileInJSOnlyNonConfiguredProject(project, file)) {
            return [];
        }
        if (ts.fileExtensionIs(file, ".html") &&
            project.getExternalFiles && project.getExternalFiles() && project.getExternalFiles().map &&
            !ts.contains(project.getExternalFiles(), file)) {
            return [];
        }
        var scriptInfo = project.getScriptInfoForNormalizedPath(file);
        var diagnostics = selector(project, file);
        return includeLinePosition
            ? this.convertToDiagnosticsWithLinePosition(diagnostics, scriptInfo)
            : diagnostics.map(function (d) { return formatDiag(file, project, d); });
    };