Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 在WebStar中远程调试坞箱容器中的膝关节炎应用程序(Type Script)_Typescript_Docker_Debugging_Remote Debugging_Koa - Fatal编程技术网

Typescript 在WebStar中远程调试坞箱容器中的膝关节炎应用程序(Type Script)

Typescript 在WebStar中远程调试坞箱容器中的膝关节炎应用程序(Type Script),typescript,docker,debugging,remote-debugging,koa,Typescript,Docker,Debugging,Remote Debugging,Koa,问题:我正在尝试使用KoaJS、Typescript和Docker设置一个新的NodeJS项目。安装程序按计划进行,但是远程调试给我带来了一些问题——或者至少对我的理解是这样的 如果我启动应用程序并使用Webstorm中的“attachtonode.js/Chrome”调试设置,调试器就会工作。。。在某种程度上。我遇到了断点,但相同的文件(即kernel.ts)再次从docker workdir(在Webstorm中)打开 看起来是这样的: 此外,在跳过断点之后,额外添加的断点不会显示任何效

问题:我正在尝试使用KoaJS、Typescript和Docker设置一个新的NodeJS项目。安装程序按计划进行,但是远程调试给我带来了一些问题——或者至少对我的理解是这样的

如果我启动应用程序并使用Webstorm中的“attachtonode.js/Chrome”调试设置,调试器就会工作。。。在某种程度上。我遇到了断点,但相同的文件(即kernel.ts)再次从docker workdir(在Webstorm中)打开

看起来是这样的:


此外,在跳过断点之后,额外添加的断点不会显示任何效果

设置

DockerFile

FROM node:11.1.0-alpine

WORKDIR /share/example

COPY package.json .
RUN npm install --quiet

COPY . .

Docker公司

version: '3'

services:
  web:
    container_name: example_web
    build: .
    command: npm run debug
    volumes:
    - .:/share/example
    - /share/example/node_modules
    ports:
    - "3000:3000"
    - "9229:9229"

package.json脚本

"debug": "nodemon --inspect=0.0.0.0:9229 -e ts,tsx --exec node -r ts-node/register ./src/kernel.ts",

tsconfig.json

{
  "compilerOptions": {
    "module": "commonjs",
    "target": "es2017",
    "moduleResolution": "node",
    "noImplicitAny": true,
    "outDir": "./dist",
    "sourceMap": true,
    "inlineSources": true
  },
  "include": [
    "./src/**/*"
  ]
}
问题:这种设置可能吗?编译typescript并让应用程序使用编译的js运行,并使用typescript文件中设置的断点进行调试

我怀疑我的typescript配置可能是罪魁祸首。Webstorm不理解docker容器中的kernel.ts与打开的文件相同。。。或者webstorm完全理解,但我的配置只是。。。缺乏

Ps:我尝试了没有Typescript的相同设置,效果很好(即远程调试,不从docker workdir打开同一个文件,而是直接跳到设置断点的文件)。因此-我猜-typescript配置缺少,或者我有一个概念上的误解。

好的。问题解决了

其实变化不大。我现在让Typescipt在启动应用程序之前编译文件(使用JetBrains/Webstorm文件查看器)

并将Json脚本命令更改为:

"nodemon --inspect=0.0.0.0:9229 ./dist/kernel.js"
现在一切正常

编辑:我猜生成的js文件的sourcemap指向“实际源”——docker容器中的文件——而不是workdir中的“源”。在主机上编译TS文件并只指向已编译的js版本就可以了