Intellij Idea 导入的模块在安装过程中未定义

7jmck4yq  于 5个月前  发布在  其他
关注(0)|答案(2)|浏览(68)

我知道这段代码是有效的,但不管什么原因,我有时无法用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中调试这个特定场景时,它总是未定义的

zysjyyx4

zysjyyx41#

调试时未定义的变量一定是由源Map中错误/缺失的名称Map引起的:如果在编译/模糊处理时重命名变量,并且没有提供适当的名称Map,则调试器将无法将源代码中的变量与VM中的变量相匹配。
例如,import somefunction from './somefunc'通常编译为

Object.defineProperty(exports, "__esModule", { value: true });
var somefunc_1 = require("./somefunc");
somefunc_1.default();

字符串
并且没有生成名称Map(生成的源Map中的"names":[]),因此调试器无法将.ts文件中的变量与运行时的代码匹配,并显示undefined
可关联的门票:https://github.com/microsoft/TypeScript/issues/9627https://github.com/webpack/webpack/issues/3957https://github.com/babel/babel/issues/1468

j2datikz

j2datikz2#

我也遇到过类似的情况。看看这个能不能帮上忙

import {fs as fs} from 'fs';

字符串
类似这样东西应该可以在调试时避免这个问题

相关问题