gpt4 book ai didi

intellij-idea - IntelliJ IDEA 14 和 angular-fullstack 调试设置卡在并发 :server

转载 作者:行者123 更新时间:2023-12-04 05:43:41 25 4
gpt4 key购买 nike

我看过这篇文章:Server hangs on Running "concurrent:server" (concurrent) task但那里的解决方案似乎并不是我所看到的内容的来源。我想知道这是否是 IntelliJ 的错误,但我想在提交给 Jetbrains 之前我会先问清楚。

我正在使用全新的、新构建的 Yeoman angular-fullstack 并尝试调试到 app.js 或 seed.js 中——例如在服务器启动后立即运行的东西。因此,我要么需要使用 node --debug-brk 启动服务器所以服务器一直等到我手动连接调试器或以 IDEA 立即连接其调试器的方式启动服务器。

这在运行 grunt serve 的命令行中运行得很好.但是,在 IDEA 中执行与调试配置相同的操作会卡在 concurrent:server 上。任务。

这都是 100% 开箱即用的 angular-fullstack,但我还是会把代码放在这里以供引用。

这是在没有指定目标时运行的“服务”任务的一部分,就像我在这里谈论的情况一样:

grunt.task.run([
'clean:server',
'env:all',
'injector:sass',
'concurrent:server',
'injector',
'wiredep',
'autoprefixer',
'express:dev',
'wait',
'open',
'watch'
]);

这是 concurrent Gruntfile 中挂起的部分:

 concurrent: {
server: [
'sass',
],
test: [
'sass',
],
debug: {
tasks: [
'nodemon',
'node-inspector'
],
options: {
logConcurrentOutput: true
}
},
dist: [
'sass',
'imagemin',
'svgmin'
]
}

下面有更多详细信息,但我现在唯一的方法是更改​​ concurrent:server任务中的一行 sass无论如何只使用并发任务的服务器部分中的内容。那个

所以现在我尝试了以下选项,以及我遇到的相关问题:

方法 #1: 通过运行 grunt serve 的 IDEA NodeJS 调试配置启动服务器

  • IDEA 使用 --debug-brk 参数让服务器等待调试器连接
  • IDEA 的调试器会立即连接,因此服务器会继续快速启动
  • 服务器在“concurrent:server”任务处停止。我已经让它运行了 6m+,没有任何变化。
  • 我已经通过 IDEA 调试配置之外的命令行使用相同的命令行和相同的行为完成了相同的操作,唯一的区别是我将 IDEA 的调试器手动连接到正在运行的 Node 实例。
  • 似乎并发的东西搞砸了 IDEA?我已经尝试将并发的东西从那里拉出来(在这种情况下是一个 sass 任务)并且工作正常但接近底部

这是此方法的控制台输出:

/usr/local/bin/node --debug-brk=65524 --nolazy --debug /usr/local/bin/grunt serve
debugger listening on port 65524
Running "serve" task

Running "clean:server" (clean) task

Running "env:all" (env) task

Running "injector:sass" (injector) task
Missing option `template`, using `dest` as template instead
Injecting scss files (3 files)
>> Nothing changed

Running "concurrent:server" (concurrent) task

方法#2:使用与#1 相同的调试配置,执行“运行”而不是“调试”

  • IDEA 不使用 --debug-brk在命令行中,也不 --nolazy ,第一行是:/usr/local/bin/node /usr/local/bin/grunt serve
  • Grunt 像在命令行上一样运行,但不会连接调试器,也不一定给我时间这样做。

按照上面的说法,我让这个完全工作的唯一方法是改变 concurrent:server任务的一部分明确。我担心的是,如果我确实需要并发功能,我真的无法在不展开整个并发任务的情况下调试应用程序的早期加载部分。

我的另一个选择是创建一个特定于 IntelliJ 的新任务来展开它,但这仍然是一种 hack...

这是 IntellliJ 错误还是其他原因?

最佳答案

问题是由 Grunt 生成子任务的方式引起的。默认情况下,派生的子进程使用与父进程相同的调试端口 - 因此派生进程被挂起并且应用程序“停止”。参见 How to fork a child process that listens on a different debug port than the parent ,例如。

请尝试添加

process.execArgv = [];

在你的 Gruntfile.js 的顶部

关于intellij-idea - IntelliJ IDEA 14 和 angular-fullstack 调试设置卡在并发 :server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27696666/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com