TypeError:超级表达式必须为null或函数

时间:2018-09-06 10:48:49

标签: javascript node.js vue.js

我对vue js中的单元测试非常陌生。我刚刚浏览了该网站,以学习单元测试“ https://vue-test-utils.vuejs.org/guides/#testing-single-file-components-with-mocha-webpack”。在“ mocha-webpack”中练习示例时,出现此错误

WEBPACK  Failed to compile with 1 error(s)
Error in ./src/Counter.vue
TypeError: Super expression must either be null or a function
at /opt/htdocs/guru/unitTest_prct/node_modules/prettier/index.js:32893:5
at /opt/htdocs/guru/unitTest_prct/node_modules/prettier/index.js:32913:4
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! mdbvue@4.2.0 test: `mocha-webpack --webpack-config  webpack.config.js --require test/setup.js test/**/*.spec.js`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the mdbvue@4.2.0 test script.
npm ERR! This is probably not a problem with npm. There is likely     additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2018-09-06T10_28_47_073Z-debug.log

谁能告诉我如何解决此错误。这是我的Counter.vue文件

<template>
  <div>
   <div>
     {{ count }}
     <button @click="increment">Increment</button>
   </div>
  </div>
</template>

<script>
export default {
    data () {
       return {
         count: 0
       }
    },
   methods: {
      increment () {
        this.count++;
      }
    }
};
</script>

这是我的Counter.spec.js文件

import { shallowMount } from '@vue/test-utils'
import Counter from '../src/docs/Counter.vue'
describe('Counter.vue', () => {
  it('increments count when button is clicked', () => {
    const wrapper = shallowMount(Counter)
    wrapper.find('button').trigger('click')
    expect(wrapper.find('div').text()).toMatch('1')
  })
})

2 个答案:

答案 0 :(得分:2)

这是与prettier 1.14.1 版本有关的问题,这是您的方案中使用的NPM软件包。

的确,看着他们的GitHub repo报告了该问题。目前,有一种可能的解决方法:基本上是将prettier/index.js的第32893行注释掉。

在您的环境中,您可以在这里找到文件:/opt/htdocs/guru/unitTest_prct/node_modules/

答案 1 :(得分:0)

我看过the issue链接的above

我的测试脚本中有--require test/setup.js。外观如下:

require('jsdom-global')();
window.Date = Date;

它解决了问题。试试吧!