Я следовал этому блогу о том, как настроить отладку TypeScript для WebStorm, и я думаю, что в значительной степени понял, отладчик выглядит так, как будто работает правильно.Но когда я устанавливаю точки останова в своем коде TypeScript, он не срабатывает, и когда я заглядываю в консоль, похоже, что ошибка уже произошла задолго до того, как WebStorm смог подключить отладчик.
Я просмотрел другие статьи о том, как настроить отладчик, и все они в значительной степени одинаковы, поэтому удивляюсь, как это происходит.
Вот некоторые конфиги в моем проекте 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"
]
}
}
FWIW, я особенно отлаживаю наборкод, который пытается обернуть текст в d3.js.Я придерживаюсь этого фрагмента , особенно функции 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);
}
}
});
}
Я особенновозникли проблемы с getComputedTextLength
, в моих определениях TypeScript.Функция есть, но почему-то JavaScript не может ее найти.Я уже пытался ответить на предыдущий вопрос StackOveflow , у меня не получилось, поэтому я попытался найти node_modules
, тип которого определяет .getComputedTextLength
, поэтому объясняет SVGTextContentElement
, но все жеошибка.
Кстати, я использую версию узла v7.10.0 и jsdom для эмуляции браузера