2017-02-11 179 views
18

我的webpack构建开始失败,没有更新包。我假设一些小的版本更新导致了这一点,但无法弄清楚如何绕过它。有谁知道该怎么办?错误[at-loader] node_modules @types jasmine

ERROR in [at-loader] node_modules\@types\jasmine\index.d.ts:39:52 
    TS1005: '=' expected. 
ERROR in [at-loader] node_modules\@types\jasmine\index.d.ts:39:38 
    TS2371: A parameter initializer is only allowed in a function or constructor implementation. 
ERROR in [at-loader] node_modules\@types\jasmine\index.d.ts:39:46 
    TS2304: Cannot find name 'keyof'. 

的package.json

"dependencies": { 
    "@angular/common": "2.4.7", 
    "@angular/compiler": "~2.4.4", 
    "@angular/core": "2.4.7", 
    "@angular/forms": "2.4.7", 
    "@angular/http": "~2.4.4", 
    "@angular/material": "^2.0.0-beta.1", 
    "@angular/platform-browser": "~2.4.4", 
    "@angular/platform-browser-dynamic": "~2.4.4", 
    "@angular/platform-server": "~2.4.4", 
    "@angular/router": "~3.4.1", 
    "@angularclass/conventions-loader": "^1.0.2", 
    "@angularclass/hmr": "~1.2.2", 
    "@angularclass/hmr-loader": "~3.0.2", 
    "@vaadin/angular2-polymer": "^1.0.0", 
    "animate.css": "^3.5.2", 
    "assets-webpack-plugin": "^3.4.0", 
    "bootstrap-sass": "^3.3.7", 
    "bootstrap-select": "^1.12.1", 
    "bootstrap-tour": "^0.11.0", 
    "core-js": "^2.4.1", 
    "font-awesome": "^4.7.0", 
    "http-server": "^0.9.0", 
    "icheck": "^1.0.2", 
    "ie-shim": "^0.1.0", 
    "jasmine-core": "^2.5.2", 
    "metismenu": "2.0.2", 
    "nestable": "^0.2.0", 
    "ng2-modal": "0.0.24", 
    "ng2-tag-input": "~0.8.4", 
    "pace": "0.0.4", 
    "pace-progress": "^1.0.2", 
    "primeng": "^1.1.4", 
    "reflect-metadata": "^0.1.9", 
    "rxjs": "~5.1.0", 
    "summernote": "^0.8.2", 
    "zone.js": "0.7.4", 
    "ag-grid": "~8.0.1", 
    "ag-grid-enterprise": "~8.0.1", 
    "ag-grid-ng2": "~8.0.0" 
    }, 
    "devDependencies": { 
    "@angular/compiler-cli": "~2.4.1", 
    "@types/hammerjs": "^2.0.33", 
    "@types/jasmine": "^2.2.34", 
    "@types/node": "^6.0.38", 
    "@types/selenium-webdriver": "2.53.38", 
    "@types/source-map": "^0.5.0", 
    "@types/uglify-js": "^2.0.27", 
    "@types/webpack": "^2.0.0", 
    "angular-router-loader": "^0.4.0", 
    "angular2-template-loader": "^0.6.0", 
    "assets-webpack-plugin": "^3.4.0", 
    "awesome-typescript-loader": "~3.0.4-rc.2", 
    "codelyzer": "~2.0.0-beta.4", 
    "copy-webpack-plugin": "^4.0.0", 
    "css-loader": "^0.26.0", 
    "exports-loader": "^0.6.3", 
    "expose-loader": "^0.7.1", 
    "extract-text-webpack-plugin": "^2.0.0-beta.4", 
    "file-loader": "^0.9.0", 
    "gh-pages": "^0.12.0", 
    "html-webpack-plugin": "^2.21.0", 
    "imports-loader": "^0.7.0", 
    "istanbul-instrumenter-loader": "1.2.0", 
    "jasmine-core": "^2.5.2", 
    "json-loader": "^0.5.4", 
    "karma": "^1.2.0", 
    "karma-chrome-launcher": "^2.0.0", 
    "karma-coverage": "^1.1.1", 
    "karma-jasmine": "^1.0.2", 
    "karma-mocha-reporter": "^2.0.0", 
    "karma-remap-coverage": "^0.1.4", 
    "karma-sourcemap-loader": "^0.3.7", 
    "karma-webpack": "1.8.1", 
    "ngc-webpack": "^1.0.2", 
    "node-sass": "^4.1.1", 
    "npm-run-all": "^4.0.0", 
    "parse5": "^3.0.1", 
    "protractor": "^4.0.10", 
    "raw-loader": "0.5.1", 
    "rimraf": "~2.5.4", 
    "sass-loader": "^4.1.1", 
    "script-ext-html-webpack-plugin": "^1.3.2", 
    "source-map-loader": "^0.1.5", 
    "string-replace-loader": "1.0.5", 
    "style-loader": "^0.13.1", 
    "to-string-loader": "^1.1.4", 
    "ts-helpers": "1.1.2", 
    "ts-node": "^2.0.0", 
    "tslint": "4.2.0", 
    "tslint-loader": "^3.3.0", 
    "typedoc": "^0.5.3", 
    "typescript": "2.0.10", 
    "url-loader": "^0.5.7", 
    "v8-lazy-parse-webpack-plugin": "^0.3.0", 
    "webpack": "2.2.1", 
    "webpack-dev-middleware": "^1.10.0", 
    "webpack-dev-server": "2.3.0", 
    "webpack-dll-bundles-plugin": "^1.0.0-beta.5", 
    "webpack-md5-hash": "^0.0.5", 
    "webpack-merge": "~2.6.1" 
    } 
+0

你好,你设法解决这个问题。我有同样的问题 – Arianule

回答

39

看起来你@types/jasmine库升级到最新版本,因为你有插入符号符号:

"@types/jasmine": "^2.2.34", 

最新版本是有问题的,因为这建议使用bug。因此,尝试现在在你的package.json版本设置为41年5月2日:

"devDependencies": { 
    "@types/jasmine": "2.5.41" 
} 

也许你必须删除您node-modules文件夹和一个干净的安装运行npm install

+0

这应该是可以接受的答案!:) – www

+1

谢谢!我猜想使用^是一个冒险的想法,看看这似乎发生的频率。 – Josh

5

如果您不使用Angular 2,请将您的TypeScript更新至2.1.6或更高版本。这应该有所帮助。

根据this discussion,更正确的解决办法是保持打字稿更新为2.x分支,它是2.1.6截至目前的最新稳定次要版本(2017年2月12日)。您在构建日志中显示的错误表明您使用的是过时的2.0.10版本。最新的jasmine定义文件在spyOn()函数中具有新的语法检查功能,该功能仅适用于TypeScript >=2.1.0。一般来说,你应该没有严格的理由坚持2.0.10,所以请升级。但是,如果存在向后兼容性问题而无法升级,则应在此处填写问题表单:https://github.com/Microsoft/TypeScript/issues,并使编译器团队知道错误。

UPD:避免在您的package.json行像这些:"typescript": "2.0.10,"typescript": "~2.0.0"。代替~您应该应用^限制(允许更新次要版本号,不仅是修补程序),如"typescript": ^2.0.0"

希望有所帮助。抱歉给你带来不便。

+0

如何升级?这是我昨天的第一个想法,我搜索了如何更新它并运行npm命令,但是当我运行webpack时,它仍然表示我正在使用旧版本。 – Josh

+0

@Josh,我看到在你的'package.json'中有一行'typescript“:”2.0.10“'。你能否将它更新为'“typescript”:“^ 2.0.10”'并运行'npm update'?它对你的情况有帮助吗?提前致谢。 – noomorph

+0

这不是一个适当的建议。 Angular 2.x不*支持TS 2.1.X. Angular 4.x将添加该支持。如果升级到Typescript 2.1.X,那么您可能会冒险与AoT等问题。 – sofly

2

即使有Angular 2+,我也有这个问题。什么解决了我的问题,而不是降级茉莉花更新Typescript。

我的步骤是:

  • 变化package.json指向打字稿
    • "typescript": "~2.0.9"的新版本 - >"typescript": "^2.0.9"
  • 运行npm install
  • 后此错误不见了。
+1

感谢它为我工作..:D –

相关问题