nwjs / nw.js

Call all Node.js modules directly from DOM/WebWorker and enable a new way of writing applications with all Web technologies.
https://nwjs.io
MIT License
40.34k stars 3.88k forks source link

0.13 beta4 - devtools / source not found when clicking links from console #4269

Open maxbarry opened 8 years ago

maxbarry commented 8 years ago

In beta4 on Ubuntu 15.10 64-bit, clicking a link to source from the console opens a new ERR_FAILED browser window with "This webpage is not available," rather than displaying the source within devtools:

package.json:

{
  "name": "sample",
  "main": "index.html"
}

index.html:

<!DOCTYPE html>
<html>
  <head>
    <title>Hello World!</title>
  </head>
  <body>
    <h1>Hello World!</h1>
    <script>
    nw.require('./myModule.js');
    </script>
  </body>
</html>

myModule.js:

console.log("Hello.");

To reproduce:

  1. Run nwjs-sdk-v0.13.0-beta4-linux-x64/nw .
  2. Right-click -> "Inspect background page"
  3. See output: Hello. /home/max/code/sports/test/myModule.js:1
  4. Click link to source

Result: New window opens. URL is "chrome-devtools://devtools/home/max/code/test/myModule.js". Title is "chrome-devtools://devtools/home/max/code/test/myModule.js is not available - NW.js". Content is: "This webpage is not available | ERR_FAILED | The webpage at chrome-devtools://devtools/home/max/code/test/myModule.js might be temporarily down or it may have moved permanently to a new web address."

Notably, this only happens when myModule.js is included in the above fashion. If instead index.html includes it like this:

<script src="myModule.js"></script>

... then it works, except that it doesn't seem to correctly link to the right line number, and the output must be viewed via "Inspect" rather than "Inspect background page".

maxbarry commented 8 years ago

I also just posted in #4121, which is closed, but still exhibiting a similar crashing bug for me.

ghostoy commented 8 years ago

The root cause is that NW crashes when trying to opening a new window in a tab, which was the behavior of Chrome browser. It will happen in following scenarios:

rogerwang commented 8 years ago

Fixed in git and will be available in the next nightly build.

maxbarry commented 8 years ago

Just checked back in and this is still happening in RC4:

package.json:

{
  "name": "sample",
  "main": "index.html"
}

index.html:

<!DOCTYPE html>
<html>
  <head>
    <title>Hello World!</title>
  </head>
  <body>
    <h1>Hello World!</h1>
    <script src="myModule.js"></script>
  </body>
</html>

myModule.js:

console.log("Loading myModule2...");

nw.require('./myModule2');

myModule2.js:

console.log("Greetings from myModule2!");

myTestError();

There are two ways to get the buggy behavior with this test case. Here is the first:

  1. ../nwjs-sdk-v0.13.0-rc4-linux-x64/nw .
  2. Right click -> "Inspect background page"
  3. Left click on "Console" tab
  4. See console output: Greetings from myModule2.js! /home/max/code/test2/myModule2.js:1
  5. Left click on the filename in the above output

Result: New browser window opens with URL chrome-devtools://devtools/home/max/code/test2/myModule2.js. Browser window says: "This site can’t be reached. The web page at chrome-devtools://devtools/home/max/code/sports/test2/myModule2.js might be temporarily down or it may have moved permanently to a new web address."

Second method:

  1. ../nwjs-sdk-v0.13.0-rc4-linux-x64/nw .
  2. Right click -> "Inspect"
  3. Left click on "Console" tab
  4. See console output: Uncaught ReferenceError: myTestError is not defined /home/max/code/test2/myModule2.js:3
  5. Left click on the filename in the above output

Result: Same as before ("The site can't be reached.").

In this scenario, clicking the first line of output (Loading myModule2... myModule.js:1) works, but clicking the second doesn't.

Ubuntu 15.10 64-bit.

rogerwang commented 8 years ago

@ghostoy please take this issue. FYI the link href handling is WebInspector.linkifyURLAsNode of third_party/WebKit/Source/devtools/front_end/components/Linkifier.js. After giving the "file://" prefix it can be opened correctly with browser window. But ideally we need it to be loaded in the Resource pane as the other JS file.

ghostoy commented 8 years ago

There are three internal causes:

maxbarry commented 8 years ago

Sorry, more of a question than a bug report, but I just noticed this is now milestoned for 0.14, and am a bit alarmed at the idea of not being able to use 0.13 at all.

Is there a workaround for this bug? I don't understand how I can work with 0.13 since I can't debug. The only thing I can think of is to merge the entire app into a single file so that it doesn't 'require' anything.

rogerwang commented 8 years ago

@ghostoy had a fix. It's still under review and it's marked as 0.14 because the underlying change is important. We want to make sure it doesn't have any side effects. @ghostoy can we have some way to enable it only in SDK build?

btw, 0.14 would be released soon with Chromium 50 stable in 1-2 weeks.

rogerwang commented 8 years ago

PS, the patch still has a chance to be in 0.13.x although it's marked as 0.14.

IssueHuntBot commented 6 years ago

@loadbalance-sudachi-kun funded this issue with $256. Visit this issue on Issuehunt

championpaddler commented 5 years ago

@maxbarry I am claiming this issue.