karma
autobahn
vue-cli
unit
vue-cli 项目中添加了 autobahn
这个库,npm run dev
正常,但是 npm run unit
执行单元测试的时候报了一个 unmask
错误,错误信息如下
gyw@gyw:~/sda1/code/exercise/vue-cli-test-karma$ npm run unit
> [email protected] unit /home/gyw/sda1/code/exercise/vue-cli-test-karma
> cross-env BABEL_ENV=test karma start test/unit/karma.conf.js --single-run
27 04 2018 10:33:03.405:INFO [karma]: Karma v1.7.1 server started at http://0.0.0.0:9876/
27 04 2018 10:33:03.406:INFO [launcher]: Launching browser PhantomJS with unlimited concurrency
27 04 2018 10:33:03.414:INFO [launcher]: Starting browser PhantomJS
27 04 2018 10:33:03.523:ERROR [karma]: TypeError: Cannot read property 'unmask' of undefined
at Receiver.unmask (/home/gyw/sda1/code/exercise/vue-cli-test-karma/node_modules/engine.io/node_modules/ws/lib/Receiver.js:306:47)
at Receiver.finish (/home/gyw/sda1/code/exercise/vue-cli-test-karma/node_modules/engine.io/node_modules/ws/lib/Receiver.js:505:25)
at Receiver.expectHandler (/home/gyw/sda1/code/exercise/vue-cli-test-karma/node_modules/engine.io/node_modules/ws/lib/Receiver.js:493:33)
at Receiver.add (/home/gyw/sda1/code/exercise/vue-cli-test-karma/node_modules/engine.io/node_modules/ws/lib/Receiver.js:103:24)
at Socket.realHandler (/home/gyw/sda1/code/exercise/vue-cli-test-karma/node_modules/engine.io/node_modules/ws/lib/WebSocket.js:825:20)
at emitOne (events.js:116:13)
at Socket.emit (events.js:211:7)
at addChunk (_stream_readable.js:263:12)
at readableAddChunk (_stream_readable.js:250:11)
at Socket.Readable.push (_stream_readable.js:208:10)
at TCP.onread (net.js:607:20)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] unit: `cross-env BABEL_ENV=test karma start test/unit/karma.conf.js --single-run`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] unit 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! /home/gyw/.npm/_logs/2018-04-27T02_33_03_550Z-debug.log
package.json
{
"scripts": {
"dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
"start": "npm run dev",
"unit": "cross-env BABEL_ENV=test karma start test/unit/karma.conf.js --single-run",
"e2e": "node test/e2e/runner.js",
"test": "npm run unit && npm run e2e",
"lint": "eslint --ext .js,.vue src test/unit test/e2e/specs",
"build": "node build/build.js",
"server": "node build/server.js"
},
"dependencies": {
"vue": "^2.5.2",
"vue-router": "^3.0.1"
},
"devDependencies": {
"autobahn": "^18.3.2",
"autoprefixer": "^7.1.2",
"babel-core": "^6.22.1",
"babel-eslint": "^8.2.1",
"babel-helper-vue-jsx-merge-props": "^2.0.3",
"babel-loader": "^7.1.1",
"babel-plugin-istanbul": "^4.1.1",
"babel-plugin-syntax-jsx": "^6.18.0",
"babel-plugin-transform-runtime": "^6.22.0",
"babel-plugin-transform-vue-jsx": "^3.5.0",
"babel-preset-env": "^1.3.2",
"babel-preset-stage-2": "^6.22.0",
"babel-register": "^6.22.0",
"chai": "^4.1.2",
"chalk": "^2.0.1",
"chromedriver": "^2.27.2",
"copy-webpack-plugin": "^4.0.1",
"cross-env": "^5.0.1",
"cross-spawn": "^5.0.1",
"css-loader": "^0.28.0",
"eslint": "^4.15.0",
"eslint-config-standard": "^10.2.1",
"eslint-friendly-formatter": "^3.0.0",
"eslint-loader": "^1.7.1",
"eslint-plugin-import": "^2.7.0",
"eslint-plugin-node": "^5.2.0",
"eslint-plugin-promise": "^3.4.0",
"eslint-plugin-standard": "^3.0.1",
"eslint-plugin-vue": "^4.0.0",
"extract-text-webpack-plugin": "^3.0.0",
"file-loader": "^1.1.4",
"friendly-errors-webpack-plugin": "^1.6.1",
"html-webpack-plugin": "^2.30.1",
"inject-loader": "^3.0.0",
"karma": "^2.0.2",
"karma-coverage": "^1.1.1",
"karma-mocha": "^1.3.0",
"karma-phantomjs-launcher": "^1.0.4",
"karma-phantomjs-shim": "^1.5.0",
"karma-sinon-chai": "^1.3.4",
"karma-sourcemap-loader": "^0.3.7",
"karma-spec-reporter": "0.0.32",
"karma-webpack": "^3.0.0",
"mocha": "^5.1.1",
"nightwatch": "^0.9.12",
"node-notifier": "^5.1.2",
"optimize-css-assets-webpack-plugin": "^3.2.0",
"ora": "^1.2.0",
"phantomjs-prebuilt": "^2.1.14",
"portfinder": "^1.0.13",
"postcss-import": "^11.0.0",
"postcss-loader": "^2.0.8",
"postcss-url": "^7.2.1",
"rimraf": "^2.6.0",
"selenium-server": "^3.0.1",
"semver": "^5.3.0",
"shelljs": "^0.7.6",
"sinon": "^4.0.0",
"sinon-chai": "^2.8.0",
"uglifyjs-webpack-plugin": "^1.1.1",
"url-loader": "^0.5.8",
"vue-loader": "^13.3.0",
"vue-style-loader": "^3.0.1",
"vue-template-compiler": "^2.5.2",
"webpack": "^3.6.0",
"webpack-bundle-analyzer": "^2.9.0",
"webpack-dev-server": "^2.9.1",
"webpack-merge": "^4.1.0",
"ws": "^5.1.1"
},
"engines": {
"node": ">= 6.0.0",
"npm": ">= 3.0.0"
},
"browserslist": [
"> 1%",
"last 2 versions",
"not ie <= 8"
]
}
解决方案:
更新 karma
mocha
相关的所有包到最新版就OK了
npm install
karma@latest
karma-coverage@latest
karma-mocha@latest
karma-phantomjs-launcher@latest
karma-phantomjs-shim@latest
karma-sinon-chai@latest
karma-sourcemap-loader@latest
karma-spec-reporter@latest
karma-webpack@latest
mocha@latest
ws@latest -D
之前使用的一种解决方案,那时候服务器上用的 cnpm :
当时是 ws
版本是1.0,把 ws
依赖包更新到 2.0 以上版本,然后把 node_module
中的 ws@1
相关的文件删除就OK了