WebStorm TypeScript调试:在附加调试器之前已经发生错误

时间:2018-06-07 11:53:12

标签: javascript typescript webstorm jsdom javascript-debugger

我跟着这个blog关于如何为WebStorm设置调试TypeScript,我想我已经明白了,调试器看起来像是正常工作。但是当我在我的TypeScript代码中设置断点时,它并没有被击中,当我查看我的控制台时,看起来错误已经发生在WebStorm能够连接调试器之前。

enter image description here

我查看了有关如何设置调试器的其他文章,它们几乎完全一样,所以想知道这是怎么回事。

以下是我的WebStorm项目中的一些配置:

// tsconfig.json
{
    "include": [
        "src/scripts/*.ts",
        "src/scripts/*.js"
    ],
    "exclude": [
        "node_modules", "typings"
    ],
    "compilerOptions": {
        "module": "commonjs",
        "target": "es6",
        "noImplicitAny": true,
        "allowJs": true,
        "sourceMap": true,
        "lib": [
            "dom",
            "es2015.promise",
            "es6"
        ],
        "typeRoots": [
            "./typings", "./node_modules/@types"
        ]
    }
}

enter image description here

FWIW,我特别调试了一组试图在d3.js中包装文本的代码。我关注此snippet,尤其是wrap函数,但在我的情况下,我必须将其转换为TypeScript,然后将其转换为:

function wrap (text: d3.Selection<d3.BaseType, {}, d3.BaseType, any>, width: number) {
    text.each(function () {
        let text = d3.select(this);
        let words = text.text().split(/\s+/).reverse();
        let word;
        let line: string[] = [];
        let lineNumber = 0;
        let lineHeight = 1.1; // ems
        let y = text.attr('y');
        let dy = parseFloat(text.attr('dy'));
        let tspan = text.text(null).append('tspan').attr('x', 0).attr('y', y).attr('dy', dy + 'em');
        while (words.length > 0) {
            word = words.pop();
            line.push(word);
            tspan.text(line.join(' '));
            let node: SVGTextContentElement = tspan.node() as SVGTextContentElement;
            if (node.getComputedTextLength() > width) {
                line.pop();
                tspan.text(line.join(' '));
                line = [word];
                tspan = text.append('tspan').attr('x', 0).attr('y', y).attr('dy', `${++lineNumber * lineHeight + dy}em`).text(word);
            }
        }
    });
}

我在TypeScript定义中特别遇到getComputedTextLength的问题。功能在那里,但不知何故JavaScript无法找到它。我已经尝试了之前StackOveflow question中已回答的内容,对我没有用,所以我尝试搜索node_modules哪个类型定义了.getComputedTextLength,从而解释了{{1}但仍然是错误。

enter image description here

顺便说一句,我使用节点版本v7.10.0 jsdom 来模拟浏览器

0 个答案:

没有答案