Skip to content

Commit 81bbfee

Browse files
Improve syntax error messages (#480)
1 parent 73b34cc commit 81bbfee

File tree

1 file changed

+28
-4
lines changed

1 file changed

+28
-4
lines changed

lib/tty-error.js

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,19 @@ var cwd = process.cwd()
88
module.exports = ttyError
99

1010
function ttyError (src, sub, err) {
11-
if (!err.filename || !err.loc) return err
11+
var longFilename = err.filename || err.fileName
12+
if (!longFilename || !getErrorLocation(err)) return err
1213

13-
var longFilename = err.filename
1414
var filename = path.relative(cwd, longFilename)
15-
var loc = err.loc
15+
var loc = getErrorLocation(err)
1616
var line = loc.line
1717
var col = loc.column + 1
1818

1919
var lineNum = String(line) + ' '
2020
var padLen = lineNum.length
2121
var empty = padLeft('|', padLen + 1)
2222
var arrow = padLeft('--> ', padLen + 4 - 1)
23-
var syntaxError = padLeft('', col) + '^ Syntax Error'
23+
var syntaxError = padLeft('', col) + '^ ' + getErrorMessage(err)
2424

2525
try {
2626
var file = fs.readFileSync(longFilename, 'utf8')
@@ -65,3 +65,27 @@ function pad (len, char) {
6565
while (res.length < len) res += char
6666
return res
6767
}
68+
69+
function getErrorLocation (err) {
70+
if (err.loc) return err.loc
71+
if (typeof err.line === 'number' && typeof err.column === 'number') {
72+
return {
73+
line: err.line,
74+
column: err.column
75+
}
76+
}
77+
return null
78+
}
79+
80+
function getErrorMessage (err) {
81+
var loc = getErrorLocation(err)
82+
var message = err.message
83+
// strip file names
84+
.replace(/^.*?:|while parsing file:.*?$/g, '')
85+
// strip position in file
86+
.replace('(' + loc.line + ':' + loc.column + ')', '')
87+
// same, but for typescript
88+
.replace('(' + loc.line + ',' + loc.column + ')', '')
89+
90+
return message || 'Syntax Error'
91+
}

0 commit comments

Comments
 (0)