我知道这段代码是有效的,但不管什么原因,我有时无法用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。我知道这段代码不需要调试就可以工作,那么为什么如果我尝试使用求值工具或观察它,它会显示undefined呢?
我以为当你导入这样一个模块时,它会运行导入的模块中的代码,所以它已经运行了newDb();
,并且有一个示例可以使用,但就在我在WebStorm中调试这个特定场景时,它总是未定义的
2条答案
按热度按时间zysjyyx41#
调试时未定义的变量一定是由源Map中错误/缺失的名称Map引起的:如果在编译/模糊处理时重命名变量,并且没有提供适当的名称Map,则调试器将无法将源代码中的变量与VM中的变量相匹配。
例如,
import somefunction from './somefunc'
通常编译为字符串
并且没有生成名称Map(生成的源Map中的
"names":[]
),因此调试器无法将.ts
文件中的变量与运行时的代码匹配,并显示undefined
可关联的门票:https://github.com/microsoft/TypeScript/issues/9627,https://github.com/webpack/webpack/issues/3957,https://github.com/babel/babel/issues/1468
j2datikz2#
我也遇到过类似的情况。看看这个能不能帮上忙
字符串
类似这样东西应该可以在调试时避免这个问题