WebStorm的tsconfig.json似乎没有更新正确的文件

7

我正在使用TypeScript开发一个基于node.js的应用程序。

我在项目的根目录中创建了一个TypeScript文件。我运行tsconfig,它似乎更新了dist文件夹。但是,在运行应用程序时,我遇到了一个错误,指示未定义一个函数。

这里的情况变得混乱起来:我的src文件夹中似乎有旧版本的.js.map文件,与同名的源文件在相同的目录下。在这个.js文件中,似乎缺少必要的函数(类方法),不同于我/dist文件夹中的当前版本。

归根结底,我想在/dist文件夹中运行文件的调试器,并在/src的TypeScript文件中设置断点。

以下是我在/src文件夹中看到的文件结构示例(该js文件不是当前版本):

enter image description here

这是/dist文件夹中经过转换的js代码所在的文件结构示例:

enter image description here

此外,这是项目中web应用程序(rest)部分的调试器设置:

enter image description here

最后,这是tsconfig.json文件的示例:

{
  "compilerOptions": {
    "module": "commonjs",
    "target": "ES5",
    "moduleResolution": "node",
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true,
    "types": ["reflect-metadata"],
    "lib": ["ES6"],
    "sourceMap": true,
    "inlineSources": true,
    "pretty": true,
    "outDir": "./dist",
    "rootDir": "./src/",
    "noLib": false
  },
  "compileOnSave": true,
  "include": [
    "src/**/*"
  ],
  "exclude": [
    "node_modules",
    "node_modules/@types"
  ]
}
  1. 我想了解是什么出了问题,导致它读取错误的js文件,而不是在/dist文件夹中的文件?

  2. 我该怎么做才能修复这个问题,指向/dist文件夹。我认为我设置的调试器设置会做到这一点,但事实并非如此。

更新:我删除了src文件夹中生成的.js文件,它们最终返回到文件夹中,再次进行其他更改后,它们仍然不是最新的。我不确定是什么生成了这些文件;是WebStorm中的设置还是tsconfig.json中的设置?

还有一些东西看起来不对劲。当我打开dist文件夹中的一个文件时,我发现以下代码而不是JS代码:

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=group.js.map

这不是我预期的结果,因为我预期看到的是转译后的js代码。


他们不会,但现在我遇到了“找不到模块”的错误,这导致应用程序无法启动。此外,当我滚动到/dist文件夹中的.js文件底部时,我看到以下内容://# sourceMappingURL=group.js.map。不知道这是否有帮助。 - user1790300
这是另一个错误。//# sourceMappingURL=group.js.map是附加到JavaScript文件末尾以启用源映射的注释。 - lilezek
似乎 sourceMappingUrl 的路径不正确。当我尝试删除 /src 文件夹中的 .map 文件时,它告诉我正在引用该文件,并且指向 /dist 文件夹中的 sourceMappingUrl。 - user1790300
似乎代码期望在/src文件夹中有一个对应于.ts文件的.js文件。然而.js文件和.map文件实际上保存在/dist文件夹下,这容易引起困惑。 - user1790300
让我们在聊天中继续这个讨论。http://chat.stackoverflow.com/rooms/149218/discussion-between-lilezek-and-user1790300 - lilezek
显示剩余3条评论
1个回答

1
你在你的包含文件和rootDir中声明了src,所有内容都应该相对于rootDir声明,但在这种情况下,你可能不需要包含或排除任何内容,因为你已经包含了src中的所有内容。 compileOnSave选项是生成文件并在删除它们时设置了一个观察器来完成此操作。你还在混合使用targetlibJavaScript版本。
如果你已经使用types属性,则不需要明确排除@types

如果指定了类型,则仅包括列出的包。

这是一个可以尝试的清理配置。
{
  "compilerOptions": {
    "module": "commonjs",
    "target": "ES5",
    "moduleResolution": "node",
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true,
    "types": ["reflect-metadata"],
    "lib": ["ES5"],
    "sourceMap": true,
    "inlineSources": true,
    "pretty": true,
    "outDir": "dist",
    "rootDir": "src",
    "noLib": false
  },
  "compileOnSave": false
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接