diff --git a/.travis.yml b/.travis.yml index 82148451c..cdfe6a1e8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,6 +2,7 @@ language: node_js before_install: - npm install -g npm@~1.4.18 node_js: + - "0.12" - "0.10" script: - istanbul cover ./node_modules/.bin/grunt --report lcovonly && istanbul report text && ( cat coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js || true ) && rm -rf coverage diff --git a/nodes/core/core/80-function.js b/nodes/core/core/80-function.js index ce5fdb20a..2f7cb63bd 100644 --- a/nodes/core/core/80-function.js +++ b/nodes/core/core/80-function.js @@ -106,15 +106,27 @@ module.exports = function(RED) { this.status({fill:"yellow",shape:"dot",text:""+converted}); } } catch(err) { - var errorMessage = err.toString(); + + var line = 0; + var errorMessage; var stack = err.stack.split(/\r?\n/); if (stack.length > 0) { - var m = /at undefined:(\d+):(\d+)$/.exec(stack[1]); - if (m) { - var line = Number(m[1])-1; - var cha = m[2]; - errorMessage += " (line "+line+", col "+cha+")"; + while(line < stack.length && stack[line].indexOf("ReferenceError") !== 0) { + line++; } + + if (line < stack.length) { + errorMessage = stack[line]; + var m = /:(\d+):(\d+)$/.exec(stack[line+1]); + if (m) { + var line = Number(m[1])-1; + var cha = m[2]; + errorMessage += " (line "+line+", col "+cha+")"; + } + } + } + if (!errorMessage) { + errorMessage = err.toString(); } this.error(errorMessage, msg); } diff --git a/package.json b/package.json index fdfd9cc2e..85444960e 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "nopt": "3.0.2", "mqtt": "0.3.x", "ws": "0.7.2", - "fs-extra": "0.18.4", + "fs-extra": "0.21.0", "clone": "1.0.2", "mustache": "2.1.1", "cron":"1.0.9", diff --git a/test/nodes/core/core/75-exec_spec.js b/test/nodes/core/core/75-exec_spec.js index 709a64d61..a4704a44c 100644 --- a/test/nodes/core/core/75-exec_spec.js +++ b/test/nodes/core/core/75-exec_spec.js @@ -23,7 +23,7 @@ var child_process = require('child_process'); describe('exec node', function() { - before(function(done) { + beforeEach(function(done) { helper.startServer(done); });