#javascript #intellij-idea #webstorm
#javascript #intellij-idea #webstorm
Вопрос:
Я знаю, что этот код работает. Но по какой-то причине иногда я не могу оценивать переменные с помощью WebStorm.
PgMem.ts
import { newDb } from 'pg-mem';
import fs from 'fs';
const inMemoryDb = newDb();
inMemoryDb.public.none(fs.readFileSync('src/DB/pgMem/migrations/001-initial.sql', 'utf8'));
export default inMemoryDb;
DbConnection.ts
import inMemoryDb from './pgMem/PgMem';
...
if (queryTypeId === queryType.MANY) {
res = await inMemoryDb.public.many(query);
}
Если я установил точку останова в строке с res
, и она попадает в эту точку останова, inMemoryDB
отображается неопределенный во время отладки WebStorm. Я знаю, что этот код работает без отладки, так почему он должен говорить undefined, если я попытаюсь использовать инструмент оценки или посмотреть на это?
Я думал, что когда вы импортируете подобный модуль, он запускает код в импортированном модуле, поэтому он уже должен был запускаться newDb();
и иметь экземпляр для работы, с которым, по-видимому, он работает, но только когда я отлаживаю в WebStorm для этого конкретного сценария, он всегда не определен
Ответ №1:
Неопределенные переменные во время отладки должны быть вызваны неправильными / отсутствующими сопоставлениями имен в исходных картах: если переменная переименована во время переноса / обфускации, и не предусмотрено соответствующее сопоставление имен, отладчик не сможет сопоставить переменную в исходном коде с переменной в виртуальной машине.
Например, import somefunction from './somefunc'
обычно компилируется для
Object.defineProperty(exports, "__esModule", { value: true });
var somefunc_1 = require("./somefunc");
somefunc_1.default();
и сопоставления имен не генерируются ( "names":[]
в сгенерированной исходной карте), поэтому отладчик не может сопоставить переменную в .ts
файле с кодом во время выполнения и показывает undefined
Заявки, которые могут быть связаны: https://github.com/microsoft/TypeScript/issues/9627, https://github.com/webpack/webpack/issues/3957, https://github.com/babel/babel/issues/1468