Импортированный модуль не определен во время отладки

#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