由于PhantomJS语法错误,Ember.js测试失败

由于PhantomJS语法错误,Ember.js测试失败,ember.js,phantomjs,syntax-error,ember-testing,Ember.js,Phantomjs,Syntax Error,Ember Testing,在Ember应用程序中运行测试时出现此错误。显然,存在一个语法错误(意外标记“,”),它的发生方式会导致测试环境的加载失败,因此它会导致每个测试失败 $ ember test version: 1.13.13 Built project successfully. Stored in "/Users/ernesto/code/projects/my-app/frontend/tmp/class-tests_dist-cqvfx9XF.tmp". not ok 1 PhantomJS 2.0 -

在Ember应用程序中运行测试时出现此错误。显然,存在一个语法错误(
意外标记“,”
),它的发生方式会导致测试环境的加载失败,因此它会导致每个测试失败

$ ember test
version: 1.13.13
Built project successfully. Stored in "/Users/ernesto/code/projects/my-app/frontend/tmp/class-tests_dist-cqvfx9XF.tmp".
not ok 1 PhantomJS 2.0 - global failure
    ---
        actual: >
            null
        message: >
            SyntaxError: Unexpected token ','
        Log: |
    ...
not ok 2 PhantomJS 2.0 - global failure
    ---
        actual: >
            null
        message: >
            Error: Could not find module `frontend/config/environment` imported from `frontend/tests/helpers/resolver`
        Log: |
    ...
not ok 3 PhantomJS 2.0 - global failure
    ---
        actual: >
            null
        message: >
            Error: Assertion Failed: The tests file was not loaded. Make sure your tests index.html includes "assets/tests.js".
        Log: |
    ...
not ok 4 PhantomJS 2.0 - Integration | Component | dropdown filter: it renders all given options and the empty option
    ---
        actual: >
            null
        message: >
            Promise rejected before it renders all given options and the empty option: you must set a resolver with `testResolver.set(resolver)`
        Log: |
    ...
注意上面的第一个错误,即
global failure
,然后报告意外的逗号标记。之后,所有剩余的测试都会失败,原因可能是无法导入存在的文件,或者没有设置
testResolver
,或者其他原因

关键是浏览器中的一切都正常运行。这似乎与PhantomJS对某些语法要求更严格有关。但是错误消息中没有关于这个恶意逗号的位置的指示


有人能给我一些关于如何找到这个逗号或以某种方式解决这个错误的提示吗?提前感谢。

当对象具有重复的属性名时,PhantomJS会抛出语法错误,例如:

var object = { foo: 1, foo: 2 };

大多数浏览器不认为这是语法错误,只使用最后一个属性定义

您可能认为我可以看看引入错误的提交的差异。结果是合并提交。在合并之前,两个合并的分支中的任何一个都不会发生错误。它只发生在这些分支中的一个合并到另一个之后。合并过程中根本没有冲突,可能会引入语法错误。即使是这样,在开发模式下,当运行测试时,错误也不会在浏览器中显示出来。运行一些ES5语法检查器来查找错误。我担心我使用了太多ES6功能,因此ES5语法检查器会对我的代码发疯。还是不?我遗漏了什么吗?错误是找不到模块。逗号这件事可能会让人恼火。其实,模块就在那里,从那时起,每个测试都会失败,因为它找不到它导入的任何模块。所有这些模块都在那里。这就是为什么我说这个初始错误(与上面输出中的四个错误中的最后一个不同,它也被标记为
global failure
)似乎是其他所有失败的原因。上面的输出只是我的ember应用程序中每个测试100多个错误中的前四个。正如我所说的,所有那些被报告没有找到的模块都在那里,而且最近没有被移动,甚至没有被修改。