配置Parse Server Cloud Code的调试环境

如何调试?首先我们需要明确的是对Parse Server进行调试,而Parse Server本质是一个Node服务,所以最终转化为对node服务的调试。

通过分析Parse Server的Dockerfile的ENTRYPOINT

ENTRYPOINT ["node", "./bin/parse-server"]

结合我们的Docker Compose文件的Command指令

command: /parse-server/config/config.json

其实最终的Parse Server是通过下面这样的命令来启动的

node ./bin/parse-server /parse-server/config/config.json 

我们可以通过添加--inspect参数来为node开启调试,同时通过Docker Compose的entrypoint参数来覆盖Parse Server Dockfile中的ENTRYPOINT指令。

因此,最终,我们修改compose.yaml文件的parse-server部分如下:

parse-server:
    image: parseplatform/parse-server
    container_name: parse-server
    volumes:
      - ./parse-server/config:/parse-server/config
      - ./parse-server/cloud:/parse-server/cloud
      - ./logs/parse-server:/parse-server/logs
    ports:
      - "1337:1337"  
      - "9229:9229"
    depends_on:
      - mongo
    entrypoint: node --inspect=0.0.0.0 ./bin/parse-server /parse-server/config/config.json
    networks:
      - internal-network  

开放9229端口,用于调试。同时通过制定entrypoint参数,开启node的inspect调试。注意这里我们使用了=0.0.0.0,这是由于容器内的IP的变化,我们不能使用localhost的127.0.0.1来进行调试。

下一步我们需要重新安装容器,先停止,然后删除,最后再安装

docker-compose stop
docker-compose rm
docker-compose up -d

然后我们调用下面的命令查看parse-server启动的logs

docker logs parse-server

你会发现下面这一行

Debugger listening on ws://0.0.0.0:9229/64a7d606-f353-4d42-b40f-f12019083e4b
For help, see: https://nodejs.org/en/docs/inspector

也就是Debugger已经开启。

接下来我们通过VSCode来进行调试


添加配置.png

如图,点击最左侧的bug图标跳转到调试主页面,然后添加配置。在弹出的下拉列表中选择node.js,选择添加node.js:添加到进程。此时VSCode会帮你生成一个launch.json文件。

编辑文件如下:

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
          "name": "Attach to Parse Server Docker",
          "type": "node",
          "request": "attach",
          "port": 9229,
          "address": "localhost",
          "localRoot": "${workspaceFolder}/parse-server/cloud",
          "remoteRoot": "/parse-server/cloud",
          "protocol": "inspector",
        },
    ]
}

配置解析:

  • name:取一个容易
  • type:指定为node,不需要修改
  • request:指定为attach模式,不需要修改
  • port:指定为9229,不需要修改
  • address:为本地,因此用localhost,如果为远程,那么修改为远程服务器的地址
  • localRoot:本地的源码位置,由于我们只需要调试cloud的代码,因此指定cloud目录即可
  • remoteRoot:注意remoteRoot和localRoot必须指定相同的代码,一般是localRoot映射到服务器的目录。
  • protocol:指定为inspector,无需修改。

这里address,localRoot,remoteRoot必须设置正确,否则可能会出现“断点未绑定”之类的错误。

接下来我们打开本地的main.js源文件,在第二行设置一个断点。然后点击绿三角开始调试,此时会出现一个调试条

截屏2022-10-16 17.24.13.png

在命令行执行

curl -X POST \
  -H "X-Parse-Application-Id: APPLICATION_ID" \
  -H "Content-Type: application/json" \
  http://localhost:1337/parse/functions/HelloCloud

该执行并不会输出结果,VSCode会显示程序在断点处暂停,此时你可以进行调试了。

截屏2022-10-16 17.26.53.png

至此,我们的调试环境配置完毕,今后如果书写了复杂的Cloud Code,我们就可以进行最为直观的调试了。

你可能感兴趣的:(配置Parse Server Cloud Code的调试环境)