使用Webstorm调试Nodewebkit

时间:2015-12-22 08:27:43

标签: javascript express node-webkit

我正在尝试在Webstorm中打开NW,以便我可以开始调试。当我在应用程序中有错误时,NW窗口关闭时没有任何暗示为什么会发生这种情况。

我在Webstorm网站上找到了这个article。在我的根文件夹中,我有app.js,其中包含通常的快速应用程序启动和模块包含。我也有package.json:

{
  "name": "nw",
  "version": "1.0.0",
  "description": "",
  "main": "index.html",
  "node-main": "app.js",
  "scripts": {
  "test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"window": {
"toolbar": true,
"width": 800,
"height": 500
},
 "license": "ISC",
 "dependencies": {
 "jquery": "^2.1.4",
 "nw": "^0.12.2",
 "pretty-bytes": "^1.0.2"
  }
}

我有以下index.html文件:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>My App</title>
<script src="app.js" type="text/javascript"></script>
</head>
<body>
<script type="text/javascript">
window.location = 'http://localhost:3000';
</script>
</body>
</html>

我有两个问题:

  1. 当我单独运行NW时(只需双击nw.exe),应用程序将启动,但并非总是如此。在10次,它将关闭3次。其余的将正常开放。

  2. 我已经按照Webstorm网站上的说明如何调试它,结果很奇怪。当我尝试在webstorm中打开它时,NE窗口显示,并且显示关闭此错误:进程以退出代码0结束 但是我可以在正常模式下打开webstorm中的应用程序(不是debugg)。

  3. 这里发生了什么? 我的Webstorm调试屏幕: enter image description here

3 个答案:

答案 0 :(得分:1)

您没有发布任何代码,但您可能会遇到异常,导致应用立即崩溃。

根据过去的经验,最常见的异常是由于对窗口的错误调用引起的:

  

窗口:定义为&#39; global&#39;的属性,指向DOM窗口   全球对象。请注意,它会在页面导航时更新。   加载脚本时此符号不可用,因为   脚本在DOM窗口加载(source

之前执行

因此,如果您使用&#39; node-main&#39;在那里你使用&#39; window&#39;你的应用程序会在启动时崩溃。在app.js中查找对窗口的任何调用并尝试对其进行注释。如果它有效 - 您需要将代码放在函数中并从index.html调用它们。

如果不是这种情况,则需要调试代码以找出它中断的原因。尝试省略代码块来查找错误。您可以发布代码以获得更多帮助。

答案 1 :(得分:0)

您是否在Webstorm中设置了调试配置?它与正常模式分开。

如果您需要在Windows中查看控制台消息,请使用Git Bash

答案 2 :(得分:0)

终于找到了我的NW窗口有时会关闭的原因。这是我的设置:

的package.json:

 "main": "index.html",
 "node-main": "appnw.js",

的index.html:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>My App</title>
 </head>
 <body>
  <script type="text/javascript">
  setTimeout (function () {
    window.location = 'http://localhost:9000';
},1000)

    

实际上问题是,当NW试图&#34;得到&#34;它。我只是使用setTimout来减慢速度:

  setTimeout ( function () {
      app.listen(app.get('port'), function () {          
   });
  }, 2000);