【问题标题】:Ionic unit testing: webpack version离子单元测试:webpack 版本
【发布时间】:2018-12-01 01:53:47
【问题描述】:

我一直在尝试根据通用准则设置一个测试示例:Testing in IonicIonic GitHub Example

我的项目package.json:

{
  "name": "starter-with-testing",
  "version": "0.0.1",
  "author": "Ionic Framework",
  "homepage": "http://ionicframework.com/",
  "private": true,
  "scripts": {
    "clean": "ionic-app-scripts clean",
    "build": "ionic-app-scripts build",
    "lint": "ionic-app-scripts lint",
    "ionic:build": "ionic-app-scripts build",
    "ionic:serve": "ionic-app-scripts serve",
    "test": "karma start ./test-config/karma.conf.js"
  },
  "dependencies": {
    "@angular/animations": "5.2.11",
    "@angular/common": "5.2.11",
    "@angular/compiler": "5.2.11",
    "@angular/compiler-cli": "5.2.11",
    "@angular/core": "5.2.11",
    "@angular/forms": "5.2.11",
    "@angular/http": "5.2.11",
    "@angular/platform-browser": "5.2.11",
    "@angular/platform-browser-dynamic": "5.2.11",
    "@ionic-native/core": "4.7.0",
    "@ionic-native/splash-screen": "4.7.0",
    "@ionic-native/status-bar": "4.7.0",
    "@ionic/storage": "2.1.3",
    "ionic-angular": "3.9.2",
    "ionicons": "3.0.0",
    "rxjs": "5.5.11",
    "sw-toolbox": "3.6.0",
    "zone.js": "0.8.26"
  },
  "devDependencies": {
    "@ionic/app-scripts": "^3.1.10",
    "@types/jasmine": "^2.8.8",
    "@types/node": "^10.3.4",
    "angular2-template-loader": "^0.6.2",
    "html-loader": "^0.5.5",
    "istanbul-instrumenter-loader": "^3.0.1",
    "jasmine": "^3.1.0",
    "jasmine-spec-reporter": "^4.2.1",
    "karma": "^2.0.3",
    "karma-chrome-launcher": "^2.2.0",
    "karma-coverage-istanbul-reporter": "^2.0.1",
    "karma-jasmine": "^1.1.2",
    "karma-jasmine-html-reporter": "^1.1.0",
    "karma-sourcemap-loader": "^0.3.7",
    "karma-webpack": "^3.0.0",
    "null-loader": "^0.1.1",
    "protractor": "^5.3.2",
    "ts-loader": "^4.4.1",
    "ts-node": "^6.1.2",
    "typescript": "~2.6.2"
  },
  "description": "An Ionic project"
}

尝试$ npm test 会导致错误:

Chrome 67.0.3396 (Linux 0.0.0) ERROR
{
"message": "An error was thrown in afterAll\nUncaught Error: Module build failed: Error: You may be using an old version of webpack; please check you're using at least version 4\n    at successfulTypeScriptInstance (/home/alexey/spaces/cordova/starter-with-testing/node_modules/ts-loader/dist/instances.js:168:15)\n    at Object.getTypeScriptInstance (/home/alexey/spaces/cordova/starter-with-testing/node_modules/ts-loader/dist/instances.js:51:12)\n    at Object.loader (/home/alexey/spaces/cordova/starter-with-testing/node_modules/ts-loader/dist/index.js:16:41)"

即需要 webpack 4.x。确实,

$ npm list webpack
starter-with-testing@0.0.1 /home/alexey/spaces/cordova/starter-with- 
testing
└─┬ @ionic/app-scripts@3.1.10
  └── webpack@3.8.1

我该怎么办?

更新:

我遇到了It looks like your post is mostly code; please add some more details. 致命错误。无法提交您的问题。

我真的不知道更多细节。有一个依赖地狱;请帮忙。我会谦虚地提交您要求的任何其他详细信息。

【问题讨论】:

  • 你的 karma.conf 文件是什么样的?
  • 这样的 karma.conf 有很多。它们也足够长。 test-config/karma.conf.js 包含 var webpackConfig = require('./webpack.test.js');test-config/webpack.test.js 包含 var webpack = require('webpack');。没什么。你能说得更具体一点吗?

标签: unit-testing ionic-framework karma-jasmine


【解决方案1】:

我遇到了同样的问题,并通过将我的 ts-loader 和 ts-node 降级到 ionic-unit-testing-example 存储库中使用的版本来修复它。 IE。在package.json:

{
    //...
    "devDependencies": {
        //...
        "ts-loader": "^3.0.3",
        "ts-node": "^3.0.2",
        //...
    }
    //...
}

ts-loader 在抱怨,所以我不确定ts-node 是否真的需要降级。

【讨论】:

  • 为我工作。当我只降级 ts-loader 时,我收到“未找到规范”警告..​​....然后我降级了 ts-node 并且测试工作就像一个魅力。
【解决方案2】:

我通过简单地给出npm i webpack@latest解决了同样的错误。
我没有进行任何自定义配置,所以它现在似乎可以工作。我只是发现编译需要很长时间,但我没有看。

【讨论】:

  • 谢谢!不过,我没那么幸运。 npm i webpack@latest 对我来说失败了。环境复杂得超乎想象,而且不够稳健。不过,有些人确实做到了。
  • 执行该命令后,您发现 webpack 安装更新到 4.x 并且仍然出现同样的错误?
  • 没有。刚刚升级失败。版本仍然
猜你喜欢
  • 1970-01-01
  • 2014-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多