testing of #214, fix bug where errors not in sketch.js wouldn't appear in the console
This commit is contained in:
parent
9e61382e87
commit
896d0cd715
2 changed files with 15 additions and 16 deletions
|
@ -28,17 +28,15 @@ class Console extends React.Component {
|
||||||
this.children = [];
|
this.children = [];
|
||||||
} else if (nextProps.consoleEvent !== this.props.consoleEvent && this.props.isPlaying) {
|
} else if (nextProps.consoleEvent !== this.props.consoleEvent && this.props.isPlaying) {
|
||||||
nextProps.consoleEvent.forEach(consoleEvent => {
|
nextProps.consoleEvent.forEach(consoleEvent => {
|
||||||
if (consoleEvent.source === 'sketch') {
|
const args = consoleEvent.arguments;
|
||||||
const args = consoleEvent.arguments;
|
Object.keys(args).forEach((key) => {
|
||||||
Object.keys(args).forEach((key) => {
|
if (args[key].includes('Exiting potential infinite loop')) {
|
||||||
if (args[key].includes('Exiting potential infinite loop')) {
|
this.props.stopSketch();
|
||||||
this.props.stopSketch();
|
this.props.expandConsole();
|
||||||
this.props.expandConsole();
|
this.appendConsoleEvent(consoleEvent);
|
||||||
this.appendConsoleEvent(consoleEvent);
|
}
|
||||||
}
|
});
|
||||||
});
|
this.appendConsoleEvent(consoleEvent);
|
||||||
this.appendConsoleEvent(consoleEvent);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,12 +30,12 @@ function getAllScriptOffsets(htmlFile) {
|
||||||
} else {
|
} else {
|
||||||
endFilenameInd = htmlFile.indexOf('.js', ind + startTag.length + 3);
|
endFilenameInd = htmlFile.indexOf('.js', ind + startTag.length + 3);
|
||||||
filename = htmlFile.substring(ind + startTag.length, endFilenameInd);
|
filename = htmlFile.substring(ind + startTag.length, endFilenameInd);
|
||||||
lineOffset = htmlFile.substring(0, ind).split('\n').length - 1;
|
// the length of hijackConsoleErrorsScript is 35 lines, already needed a -1 offset.
|
||||||
|
lineOffset = htmlFile.substring(0, ind).split('\n').length + 34;
|
||||||
offs.push([lineOffset, filename]);
|
offs.push([lineOffset, filename]);
|
||||||
lastInd = ind + 1;
|
lastInd = ind + 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
console.log(offs);
|
|
||||||
return offs;
|
return offs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -71,7 +71,7 @@ function hijackConsoleErrorsScript(offs) {
|
||||||
window.parent.postMessage([{
|
window.parent.postMessage([{
|
||||||
method: 'error',
|
method: 'error',
|
||||||
arguments: data,
|
arguments: data,
|
||||||
source: 'sketch'
|
source: fileInfo[1]
|
||||||
}], '*');
|
}], '*');
|
||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
|
@ -199,7 +199,8 @@ class PreviewFrame extends React.Component {
|
||||||
scriptOffs = getAllScriptOffsets(sketchDocString);
|
scriptOffs = getAllScriptOffsets(sketchDocString);
|
||||||
const consoleErrorsScript = sketchDoc.createElement('script');
|
const consoleErrorsScript = sketchDoc.createElement('script');
|
||||||
consoleErrorsScript.innerHTML = hijackConsoleErrorsScript(JSON.stringify(scriptOffs));
|
consoleErrorsScript.innerHTML = hijackConsoleErrorsScript(JSON.stringify(scriptOffs));
|
||||||
sketchDoc.body.appendChild(consoleErrorsScript);
|
// sketchDoc.head.appendChild(consoleErrorsScript);
|
||||||
|
sketchDoc.head.insertBefore(consoleErrorsScript, sketchDoc.head.firstElement);
|
||||||
|
|
||||||
return `<!DOCTYPE HTML>\n${sketchDoc.documentElement.outerHTML}`;
|
return `<!DOCTYPE HTML>\n${sketchDoc.documentElement.outerHTML}`;
|
||||||
}
|
}
|
||||||
|
@ -312,7 +313,7 @@ class PreviewFrame extends React.Component {
|
||||||
} else {
|
} else {
|
||||||
const style = sketchDoc.createElement('style');
|
const style = sketchDoc.createElement('style');
|
||||||
style.innerHTML = `\n${resolvedFile.content}`;
|
style.innerHTML = `\n${resolvedFile.content}`;
|
||||||
sketchDoc.body.appendChild(style);
|
sketchDoc.head.appendChild(style);
|
||||||
css.parentElement.removeChild(css);
|
css.parentElement.removeChild(css);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue