感谢您抽出宝贵时间帮我解决这个问题。
我创建了一个docker,我还为pm2配置了一个配置文件。我希望能够在开发模式下启动docker并在内部使用pm2,能够通过开发工具等调试打字稿。
应用程序是使用nodejs,expressjs in typescript构建的。
pm2 start server-debug.config.js
一切正常。我可以通过Dev工具调试应用程序,我可以打开typescript文件并添加断点。构建docker时,一切正常,只有一个例外。打开开发工具时,我只能看到js文件,无法调试打字稿。
所以基本上这个转换器在本地工作,但不能通过码头工作。
配置
```
# specify the node base image with your desired version node:<version>
FROM keymetrics/pm2:latest-alpine
# client backend
COPY . /home/api
WORKDIR /home/api
ARG API_TAG
ARG NODE_ENV
ARG CONTAINER_USER
ENV NODE_ENV $NODE_ENV
RUN npm install && npm install pm2 -g && pm2 install typescript
# Set user to node on production
USER $CONTAINER_USER
# start backend & frontend
ENTRYPOINT if [ "$NODE_ENV" = "development" ];\
then pm2-runtime /home/api/server-dev.config.js --env ${NODE_ENV} --no-
daemon;\
else pm2-runtime /home/api/server.config.js --env ${NODE_ENV} --no-daemon;\
fi
```
const _ = require('lodash');
const serverConfig = require('./server.config');
const devServerConfig = {apps: []};
devServerConfig.apps[0] = _.merge(serverConfig.apps[0], {
watch: true,
port: 8000,
source_map_support: true,
script: "./dist/App.js",
ignore_watch: ["data",
"node_modules",
"DockerFile",
".gitignore",
"docker-compose*",
"README.md",
"server.config.js",
"logs",
"server-dev.config.js"],
node_args: [ "--inspect=0.0.0.0:5858", "--harmony" ],
error_file : "./logs/error.service-debug.log",
out_file : "./logs/out.service-debug.log",
pid_file : "./logs/debug.service.pid",
log_date_format: "",
watch_options: {
"usePolling": true,
"alwaysStat": true,
"useFsEvents": false,
},
})
// , "--require=ts-node/register", "--harmony"
module.exports = devServerConfig;
```
.env文件
API_TAG = 1.0 NODE_ENV =发展 CONTAINER_USER =根 PORT = 8000 MONGO_PORT = 27017
tsconfig
```
{
"compilerOptions": {
"target": "es6",
"module": "commonjs",
"outDir": "dist",
"sourceMap": true
},
"files": [
"./node_modules/@types/mocha/index.d.ts",
"./node_modules/@types/node/index.d.ts"
],
"include": [
"./src/**/*.ts"
],
"exclude": [
"node_modules"
]
}
```
答案 0 :(得分:0)
对于那些正在努力解决这个问题的人来说,经过几个小时的调试,反复试验,我找到了一个有效的解决方案。在tsconfig文件中添加内联源映射将解决问题。
我会接受我自己的答案作为帮助其他人解决这个问题的解决方案。