我正在尝试获取一个简单的React前端和nodejs后端,并在vs代码中运行和调试它们。我正在使用compound启动配置来一起启动“客户端”和“服务器”。 nodejs后端会自动为我启动,但是我总是必须在控制台中执行npm start
才能使客户端连接。我看过的所有教程都建议必须在vs代码中运行调试配置之前执行此步骤。 vs代码是否无法像nodejs后端那样启动前端。
这是我的launch.json的样子:
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"compounds": [
{
"name": "Client+Server",
"configurations": [ "Server", "Client" ]
}
],
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Server",
"program": "${workspaceFolder}/server/server.js"
},
{
"type": "chrome",
"request": "launch",
"name": "Client",
"url": "http://localhost:3000",
"webRoot": "${workspaceFolder}/client/src/index.js"
}
]
}
答案 0 :(得分:0)
客户端需要npm start
的原因是因为您引用的是http://localhost:3000
npm start实际上会运行一个小型Web服务器,以在http://localhost:3000上为您的html文件提供服务
另一种方法是在您的src上使用类似http-server
之类的东西,将具有相同的效果
答案 1 :(得分:0)
从开始启动调试会话时遇到了一些麻烦,所以我决定启动nodejs
服务器,然后附加调试器。
我发现此配置适合我。
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "attach",
"name": "Attach Server",
"restart": true,
"port": 9000
}, {
"type": "chrome",
"request": "launch",
"name": "Launch Client",
"port": 9001,
"url": "http://localhost:3000",
"webRoot": "${workspaceFolder}/dist",
"sourceMaps": true
}
],
"compounds": [
{
"name": "Attach Client+Server",
"configurations": ["Attach Server", "Launch Client"]
}
]
}
这是我用于package.json
的一些脚本。
{
"scripts": {
"prestart": "rollup -c -w",
"start": "nodemon --ignore '*.ts' --inspect=9000 ./dist/server/index"
},
}
我不得不使用nodemon
来检测更改并重新启动节点服务器。
但是,如果您的React应用程序需要与节点应用程序分开启动,那么我建议使用http-server
之类的东西来启动React应用程序的本地服务器。然后使用concurrently
同时启动两个应用程序。
您的package.json
可能如下所示:
{
"scripts": {
"prestart": "rollup -c -w",
"start:client": "http-server ./dist/client/",
"start:server": "nodemon --ignore '*.ts' --inspect=9000 ./dist/server/index",
"serve": "concurrently \"npm:start:client\" \"npm:start:server\""
},
}
资源VS代码调试配置:https://code.visualstudio.com/Docs/editor/debugging