fix: incorrect error message for browser UMD bundle

This commit is contained in:
Harttle
2023-06-04 12:00:32 +08:00
parent fc42438283
commit 3a67eb7f1c
2 changed files with 17 additions and 9 deletions
+7 -9
View File
@@ -7,18 +7,16 @@ export abstract class LiquidError extends Error {
public context = '' public context = ''
private originalError?: Error private originalError?: Error
public constructor (err: Error | string, token: Token) { public constructor (err: Error | string, token: Token) {
/**
* note: for ES5 targeting, `this` will be replaced by return value of Error(),
* thus everything on `this` will be lost, avoid calling `LiquidError` methods here
*/
super(typeof err === 'string' ? err : err.message) super(typeof err === 'string' ? err : err.message)
if (typeof err !== 'string') this.defineUnEnumerable('originalError', err) if (typeof err !== 'string') Object.defineProperty(this, 'originalError', { value: err, enumerable: false })
this.defineUnEnumerable('token', token) Object.defineProperty(this, 'token', { value: token, enumerable: false })
}
private defineUnEnumerable (property: string, value: unknown) {
Object.defineProperty(this, property, {
value: value,
enumerable: false
})
} }
protected update () { protected update () {
this.defineUnEnumerable('context', mkContext(this.token)) Object.defineProperty(this, 'context', { value: mkContext(this.token), enumerable: false })
this.message = mkMessage(this.message, this.token) this.message = mkMessage(this.message, this.token)
this.stack = this.message + '\n' + this.context + this.stack = this.message + '\n' + this.context +
'\n' + this.stack '\n' + this.stack
+10
View File
@@ -0,0 +1,10 @@
const LiquidUMD = require('../../dist/liquid.browser.umd.js').Liquid
describe('browser', function () {
it('should yield unclosed output error', () => {
const engine = new LiquidUMD()
return expect(engine.parseAndRender('{{huh')).rejects.toMatchObject({
message: 'output "{{huh" not closed, line:1, col:1'
})
})
})