使用Visual Studio Code调试并运行Angular2 Typescript?
我正在尝试使用VS代码https://angular.io/guide/quickstart调试Angular2打字稿应用程序
任何人都可以分享从VS代码进行调试和运行的步骤吗?
使用Visual Studio Code调试并运行Angular2 Typescript?
我正在尝试使用VS代码https://angular.io/guide/quickstart调试Angular2打字稿应用程序
任何人都可以分享从VS代码进行调试和运行的步骤吗?
Answers:
经过大量研究,我发现了这些步骤-
在开始之前,请确保您具有最新版本的VS代码。您可以验证最新版本–帮助>检查更新或关于。
安装名为“ Debugger for Chrome”的扩展程序。安装完成后,重新启动VS代码。
转到调试窗口,使用Chrome打开launch.json。
在Launch.json配置部分中,使用以下config
{
"name": "Launch localhost with sourcemaps",
"type": "chrome",
"request": "launch",
"url": "http://localhost:3000/Welcome",
"sourceMaps": true,
"webRoot": "${workspaceRoot}"
}
在tsconfig.json中,确保您具有“ sourceMap”:true
这样就完成了调试环境设置。现在,在开始调试之前,请确保已关闭所有现有的Chrome.exe实例。从任务管理器验证或使用DOS命令'killall chrome'
使用npm start命令和Chrome作为默认浏览器运行您的项目。
一旦应用程序成功运行,您将收到端口号。从Chrome浏览器复制网址,然后粘贴到上面的网址部分。(注意:如果您在应用程序中使用路由,则url将像上面一样,否则将以index.html等结尾)
现在,在您的打字稿文件中的任意位置放置断点。
再次,转到VS代码中的调试窗口,然后单击“运行”。您连接到调试器的选项卡/实例将如下所示。
Failed to load resource: net::ERR_CONNECTION_REFUSED (http://localhost:3000/)
HTTP GET failed: Error: connect ECONNREFUSED 127.0.0.1:9222
在本地主机上正常加载。
指定一个userDataDir-这样可以避免与您可能已经在运行的其他Chrome实例发生冲突。因此,我注意到,Chrome只会停止监听您指定的任何端口。以下是我使用的,很棒!
{
"name": "Launch",
"type": "chrome",
"request": "launch",
"url": "http://localhost:3000/#/about",
"port": 9223,
"sourceMaps": true,
"diagnosticLogging": true,
"webRoot": "${workspaceRoot}",
"userDataDir": "${workspaceRoot}/out/chrome"
}
感谢@reecebradley- GitHub:无法连接到目标:连接ECONNREFUSED
我遇到了类似的问题,但我的项目还包含导致上述解决方案失败的webpack。遍历Internet之后,我在github上的一个线程中找到了一个解决方案:
https://github.com/AngularClass/angular2-webpack-starter/issues/144#issuecomment-218721972
无论如何,这就是完成的工作。
注意:-在开始之前,您必须检查您是否具有Visual Studio代码的最新版本,以及是否已在VS Code中安装了名为“ Chrome调试器”的扩展。
首先,在“ ./config/webpack.dev.js”中
然后安装并使用write-file-webpack-plugin:
通过添加以下命令将插件添加到“ ./config/webpack.dev.js”:
在顶部的Webpack插件下。继续添加:
到新的DefinePlugin()之后的插件列表,即
plugins:[
new DefinePlugin({....}),
new WriteFilePlugin(),
....
]
这样可以确保将源映射写入磁盘
最后,下面给出了我的launch.json。
{
"version": "0.2.0",
"configurations": [{
"name": "Launch Chrome against localhost, with sourcemaps",
"type": "chrome",
"request": "launch",
"url": "http://localhost:3000/",
"runtimeArgs": [
"--user-data-dir",
"--remote-debugging-port=9222"
],
"sourceMaps": true,
"diagnosticLogging": true,
"webRoot": "${workspaceRoot}",
"userDataDir": "${workspaceRoot}/.vscode/chrome"
},
{
"name": "Attach to Chrome, with sourcemaps",
"type": "chrome",
"request": "attach",
"url": "http://localhost:3000/",
"port": 9222,
"sourceMaps": true,
"diagnosticLogging": true,
"webRoot": "${workspaceRoot}"
}]
}
请注意,webroot中不存在“ / dist /”。使用此配置,源映射位于./dist/中,但它们指向./src/。vscode将绝对根添加到工作区中,并正确解析文件。
这是有关如何在VSCode中调试Angular的官方Visual Studio代码文档https://code.visualstudio.com/docs/nodejs/angular-tutorial#_configure-the-chrome-debugger
要调试客户端Angular代码,我们需要安装Debugger for Chrome扩展程序。打开扩展程序视图(Ctrl + Shift + X),然后在搜索框中输入“ chrome”。您会看到几个引用Chrome的扩展程序。按Debugger for Chrome的安装按钮。该按钮将变为“正在安装”,然后在完成安装后将变为“重新加载”。按重新加载以重新启动VS Code并激活扩展。
我们首先需要配置调试器。为此,请转到“调试”视图(Ctrl + Shift + D),然后单击齿轮按钮以创建launch.json调试器配置文件。从“选择环境”下拉列表中选择“ Chrome”。这将在项目的新.vscode文件夹中创建一个launch.json文件,其中包括配置以启动网站或附加到正在运行的实例。我们需要对示例进行更改:将端口从8080更改为4200。
我对此有问题,而@Sankets答案帮助了这个问题为我解决了这个问题https://github.com/angular/angular-cli/issues/2453。
具体将以下内容添加到launch.json
"sourceMapPathOverrides": {
"webpack:///c:/foo/bar/angular-project/*": "${workspaceRoot}/*"
}
对于角种子:
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug with chrome",
"type": "chrome",
"request": "launch",
"url": "http://localhost:5555",
"sourceMaps": true,
"webRoot": "${workspaceRoot}/src/client",
"userDataDir": "${workspaceRoot}/out/chrome",
"sourceMapPathOverrides": {
"app/*": "${webRoot}/app/*"
}
}
]
}
这些模块可以launch.json
在MacOS上为我工作,这使我能够在每个调试会话的新Chrome实例中使用调试器和断点...
// This forces chrome to run a brand new instance, allowing existing
// chrome windows to stay open.
"userDataDir": "${workspaceRoot}/.vscode/chrome",
"webRoot": "${workspaceRoot}",
"sourceMaps": true,
"sourceMapPathOverrides": { "webpack:///./*": "${webRoot}/*" }
这是经过试验和测试的-
第1步:安装chrome调试器:只需打开VS Code中的命令面板(Ctrl + Shift + P),然后输入扩展程序:安装扩展程序命令。当扩展程序列表出现时,键入“ chrome”以过滤列表并安装Debugger for Chrome扩展程序。然后,您将创建一个启动配置文件。
步骤2:创建和更新launch.json文件:两个带有“ request”:“ launch”的示例launch.json配置。您必须指定文件或网址,才能针对本地文件或网址启动Chrome。如果使用url,请将webRoot设置为提供文件的目录。这可以是绝对路径,也可以是使用$ {workspaceRoot}(在Code中打开的文件夹)的路径。webRoot用于将URL(例如“ http://localhost/app.js ”)解析为磁盘上文件(例如“ /Users/me/project/app.js”),因此请注意正确设置。如下更新launch.json文件的内容-
{
"version": "0.1.0",
"configurations": [
{
"name": "Launch localhost",
"type": "chrome",
"request": "launch",
"url": "http://localhost/some_name",
"webRoot": "${workspaceRoot}/wwwroot"
},
{
"name": "Launch index.html (disable sourcemaps)",
"type": "chrome",
"request": "launch",
"sourceMaps": false,
"file": "${workspaceRoot}/index.html"
},
]
}
我需要使用,CORS
因此我在禁用网络安全性的情况下打开chrome。然后,我通过将调试器附加到chrome来进行Angular应用程序的调试。
CMD生产线将启动禁用了网络安全性的Chrome:
cd "C:\Program Files (x86)\Google\Chrome\Application\"
chrome.exe --user-data-dir="C:/Chrome dev session" --disable-web-security --remote-debugging-port=9222
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",
"configurations": [
{
"type": "chrome",
"request": "attach",
"name": "Attach to Chrome",
"port": 9222,
"webRoot": "${workspaceFolder}"
},
]
}
Sanket的答案是正确的,但我对此有些疑问。
首先,Launch.json位于项目的“ .vscode”目录中,其次,端口号应与用于启动应用程序的默认服务器端口相同。我使用cmd中的ng serve启动项目,默认端口号为4200,所以我如下更改了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",
"configurations": [
{
"type": "chrome",
"request": "launch",
"name": "Launch Chrome against localhost",
"url": "http://localhost:4200",
"sourceMaps": true,
"webRoot": "${workspaceFolder}"
}
]
}