diff --git a/src/render/expression.ts b/src/render/expression.ts index d73eb357c0..9c2b6a8949 100644 --- a/src/render/expression.ts +++ b/src/render/expression.ts @@ -12,7 +12,7 @@ import { parseStringLiteral } from '../parser/parse-string-literal' import { Context } from '../context/context' import { range } from '../util/underscore' import { Operators } from '../render/operator' -import { UndefinedVariableError, InternalUndefinedVariableError } from '../util/error' +import { UndefinedVariableError } from '../util/error' export class Expression { private postfix: Token[] @@ -52,7 +52,7 @@ function evalPropertyAccessToken (token: PropertyAccessToken, ctx: Context, leni try { return ctx.get([variable, ...props]) } catch (e) { - if (lenient && e instanceof InternalUndefinedVariableError) return null + if (lenient && e.name === 'InternalUndefinedVariableError') return null throw (new UndefinedVariableError(e, token)) } } diff --git a/src/util/error.ts b/src/util/error.ts index f7a96776d7..1caf82e7cf 100644 --- a/src/util/error.ts +++ b/src/util/error.ts @@ -44,7 +44,7 @@ export class RenderError extends LiquidError { super.update() } public static is (obj: any): obj is RenderError { - return obj instanceof RenderError + return obj.name === 'RenderError' } } diff --git a/test/e2e/issues.ts b/test/e2e/issues.ts index fddccbeff3..63ca145ab7 100644 --- a/test/e2e/issues.ts +++ b/test/e2e/issues.ts @@ -1,4 +1,5 @@ import { Liquid } from '../..' +import { Liquid as LiquidUMD } from '../../dist/liquid.browser.umd.js' import { expect, use } from 'chai' import * as chaiAsPromised from 'chai-as-promised' @@ -78,4 +79,12 @@ describe('Issues', function () { ) expect(html).to.equal('BAR') }) + it('#313 lenientIf not working as expected in umd', async () => { + const engine = new LiquidUMD({ + strictVariables: true, + lenientIf: true + }) + const html = await engine.parseAndRender(`{{ name | default: "default name" }}`) + expect(html).to.equal('default name') + }) })