首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在接收任务后对typescript的vscode运行调试器,调试器运行未编译的代码

问无法在接收任务后对typescript的vscode运行调试器,调试器运行未编译的代码
EN

Stack Overflow用户
提问于 2020-10-23 17:56:53
回答 1查看 114关注 0票数 0

好的,问题是在转到吞咽之前,调试器工作得很好。这里有什么问题?我有tsconfig.json文件,有以下配置

代码语言:javascript
复制
{
  "compilerOptions": {
    "target": "es2018",
    "module": "commonjs",
    "moduleResolution": "node",
    "outDir": "dist",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "esModuleInterop": false,
    "sourceMap": true,
    "baseUrl": "src",
    "typeRoots": ["node_modules/@types/", "./src/modules/@types/**/"],
    "paths": {
      "@/*": ["./*"]
    }
  },
  "include": ["src"],
  "exclude": ["./src/modules/@types"]
}

vscode调试器任务是npm: build,它基本上运行"tsc“命令。但对于其他一些情况,我需要添加gulp文件,并开始使用gulp编译ts (包括源地图等)。但是当vscode调试器开始运行时,尝试运行node ./src/server.ts,而不是./dist/server.js文件。当构建任务被吞噬时,就会发生这种情况。使用tsc命令,它仍然可以完美地工作。gulp文件是否需要返回某些内容或任何其他配置才能强制运行vscode调试器./dist/server.js?

gulpfile在这里

代码语言:javascript
复制
const gulp = require("gulp")
const babel = require("gulp-babel")
var ts = require("gulp-typescript")
var sourcemaps = require('gulp-sourcemaps');


const tsProject = ts.createProject("tsconfig.json")
gulp.task("tsc", () => 
  tsProject
    .src()
    .pipe(tsProject())
    .pipe(gulp.dest("dist"))
)

gulp.task("sourcemaps", () =>
  gulp.src("dist/**/*.js")
    .pipe(sourcemaps.init())
    .pipe(sourcemaps.write('.'))
    .pipe(gulp.dest("dist"))
)

gulp.task("resolve:alias", () => 
  gulp.src("dist/**/*.js")
    .pipe(
      babel({
        plugins: [
          [
            "babel-plugin-module-resolver",
            {
              alias: {
                "@": "./dist",
              },
            },
          ],
        ],
      })
    )
    .pipe(gulp.dest("dist"))
)

module.exports.default = gulp.series("tsc", "resolve:alias", "sourcemaps")

我尝试了其他策略,比如单独运行tsc。但是,即使删除所有其他任务并只运行gulp tsc任务也会失败,但是标准npx tsc通过

EN

回答 1

Stack Overflow用户

发布于 2020-10-24 00:39:16

好了,我解决了问题。我在错误的地方搜索解决方案。

问题: Gulp在编译ts文件时会删除源地图。我添加了自定义源生成器插件,但它也生成了错误的源映射,缺少映射。

解决方案:我用tsc生成的实际源地图检查了差异。所以我更新了我的资源地图插件选项,如下所示。

代码语言:javascript
复制
gulp.task("sourcemaps", () =>
  gulp
    .src("dist/**/*.js")
    .pipe(sourcemaps.init())
    .pipe(sourcemaps.identityMap())
    .pipe(
      sourcemaps.mapSources(function (sourcePath) {
        return "../src/" + sourcePath.replace(/\.js$/, ".ts")
      })
    )
    .pipe(sourcemaps.write(".", { includeContent: false, sourceRoot: "" }))
    .pipe(gulp.dest("dist"))
)

我不得不用ts扩展替换js扩展,因为我需要在生成的js文件上调用babel插件,然后生成源地图。现在它可以工作了

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64497829

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档