瀏覽代碼

improve data expression tryCatch

Hugo Di Francesco 4 年之前
父節點
當前提交
8ac6b15771
共有 3 個文件被更改,包括 6 次插入8 次删除
  1. 1 3
      src/component.js
  2. 1 1
      src/utils.js
  3. 4 4
      test/error.spec.js

+ 1 - 3
src/component.js

@@ -28,9 +28,7 @@ export default class Component {
             Object.defineProperty(dataExtras, `$${name}`, { get: function () { return callback(canonicalComponentElementReference) } });
             Object.defineProperty(dataExtras, `$${name}`, { get: function () { return callback(canonicalComponentElementReference) } });
         })
         })
 
 
-        tryCatch(() => {
-            this.unobservedData = componentForClone ? componentForClone.getUnobservedData() : saferEval(dataExpression, dataExtras)
-        }, { el, expression: dataExpression })
+        this.unobservedData = componentForClone ? componentForClone.getUnobservedData() : tryCatch(() => saferEval(dataExpression, dataExtras), { el, expression: dataExpression })
 
 
         /* IE11-ONLY:START */
         /* IE11-ONLY:START */
             // For IE11, add our magic properties to the original data for access.
             // For IE11, add our magic properties to the original data for access.

+ 1 - 1
src/utils.js

@@ -66,7 +66,7 @@ export function debounce(func, wait) {
 }
 }
 
 
 const handleError = (el, expression, error) => {
 const handleError = (el, expression, error) => {
-    console.error(`Alpine: error in expression "${expression}" in component: `, el, `due to "${error}"`);
+    console.error(`Alpine: error in expression "${expression}" in component:`, el, `due to "${error}"`);
     if (!isTesting()) {
     if (!isTesting()) {
         throw error;
         throw error;
     }
     }

+ 4 - 4
test/error.spec.js

@@ -23,7 +23,7 @@ test('error in x-data eval contains element, expression and original error', asy
     `
     `
     await expect(Alpine.start()).rejects.toThrow()
     await expect(Alpine.start()).rejects.toThrow()
     expect(mockConsoleError).toHaveBeenCalledWith(
     expect(mockConsoleError).toHaveBeenCalledWith(
-        "Alpine: error in expression \"{ foo: 'bar' \" in component: ",
+        "Alpine: error in expression \"{ foo: 'bar' \" in component:",
         document.querySelector('[x-data]'),
         document.querySelector('[x-data]'),
         "due to \"SyntaxError: Unexpected token ')'\""
         "due to \"SyntaxError: Unexpected token ')'\""
     )
     )
@@ -37,7 +37,7 @@ test('error in x-bind eval contains element, expression and original error', asy
     `
     `
     await Alpine.start()
     await Alpine.start()
     expect(mockConsoleError).toHaveBeenCalledWith(
     expect(mockConsoleError).toHaveBeenCalledWith(
-        "Alpine: error in expression \"foo.bar\" in component: ",
+        "Alpine: error in expression \"foo.bar\" in component:",
         document.querySelector('[x-bind:foo]'),
         document.querySelector('[x-bind:foo]'),
         "due to \"TypeError: Cannot read property 'bar' of null\""
         "due to \"TypeError: Cannot read property 'bar' of null\""
     )
     )
@@ -51,7 +51,7 @@ test('error in x-model eval contains element, expression and original error', as
     `
     `
     await Alpine.start()
     await Alpine.start()
     expect(mockConsoleError).toHaveBeenCalledWith(
     expect(mockConsoleError).toHaveBeenCalledWith(
-        "Alpine: error in expression \"foo.bar\" in component: ",
+        "Alpine: error in expression \"foo.bar\" in component:",
         document.querySelector('[x-model]'),
         document.querySelector('[x-model]'),
         "due to \"TypeError: Cannot read property 'bar' of null\""
         "due to \"TypeError: Cannot read property 'bar' of null\""
     )
     )
@@ -67,7 +67,7 @@ test('error in x-for eval contains element, expression and original error', asyn
     `
     `
     await expect(Alpine.start()).rejects.toThrow()
     await expect(Alpine.start()).rejects.toThrow()
     expect(mockConsoleError).toHaveBeenCalledWith(
     expect(mockConsoleError).toHaveBeenCalledWith(
-        "Alpine: error in expression \"foo\" in component: ",
+        "Alpine: error in expression \"foo\" in component:",
         document.querySelector('[x-for]'),
         document.querySelector('[x-for]'),
         "due to \"ReferenceError: foo is not defined\""
         "due to \"ReferenceError: foo is not defined\""
     )
     )