angular - LỖI trong [at-loader] node_modules\@types\jasmine
Việc build webpack của tôi bắt đầu thất bại một cách bất ngờ mà không có gói nào được cập nhật. Tôi cho rằng một bản cập nhật phiên bản nhỏ đã gây ra điều này, nhưng không thể tìm ra cách để giải quyết. Có ai biết phải làm gì không?
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"
}
Câu trả lời #1
Có vẻ như thư viện @types/jasmine của bạn đã được nâng cấp lên phiên bản mới nhất vì bạn có ký hiệu mũ (caret):
"@types/jasmine": "^2.2.34",
Phiên bản mới nhất đang gặp sự cố như lỗi này cho thấy. Vì vậy, hiện tại hãy thử bằng cách đặt phiên bản thành 2.5.41 trong file package.json của bạn:
"devDependencies": {
"@types/jasmine": "2.5.41"
}
Có lẽ bạn phải xóa thư mục node-modules của mình và chạy npm install để cài đặt sạch.
Câu trả lời #2
Nếu bạn không sử dụng Angular 2, vui lòng cập nhật TypeScript của bạn lên phiên bản 2.1.6 hoặc cao hơn. Điều này nên giúp ích.
Theo cuộc thảo luận này, một giải pháp đúng hơn là giữ TypeScript được cập nhật lên phiên bản nhỏ ổn định mới nhất của nhánh 2.x, hiện là 2.1.6 (tính đến 12/02/2017). Lỗi bạn gặp trong nhật ký xây dựng cho thấy bạn đang sử dụng phiên bản 2.0.10 cũ. Tập tin định nghĩa jasmine mới nhất có kiểm tra cú pháp mới trong hàm spyOn(), chỉ có sẵn cho TypeScript >=2.1.0. Nhìn chung, bạn không có lý do nghiêm trọng nào để giữ phiên bản 2.0.10, vì vậy, vui lòng nâng cấp. Tuy nhiên, nếu có vấn đề tương thích ngược ngăn bạn nâng cấp, bạn nên điền vào biểu mẫu sự cố tại đây: https://github.com/Microsoft/TypeScript/issues và thông báo cho nhóm biên dịch về lỗi.
CẬP NHẬT: Tránh trong package.json của bạn các dòng như sau: "typescript": "2.0.10", "typescript": "~2.0.0". Thay vì ~, bạn nên áp dụng hạn chế ^ (cho phép cập nhật các phiên bản phụ, không chỉ bản vá) như "typescript": ^2.0.0".
Hy vọng điều đó có ích. Xin lỗi vì sự bất tiện.
