【问题标题】:ERROR in [at-loader] node_modules\@types\jasmine[at-loader] node_modules\@types\jasmine 中的错误
【发布时间】:2017-06-30 02:05:03
【问题描述】:

我的 webpack 构建开始突然失败,没有更新任何包。我假设一些次要版本更新导致了这种情况,但无法弄清楚如何解决它。有谁知道该怎么做?

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"
  }

【问题讨论】:

  • 您好,您解决了这个问题吗?我有同样的问题

标签: angular typescript npm webpack jasmine


【解决方案1】:

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

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

最新版本存在bug 建议的问题。所以现在尝试在你的 package.json 中将版本设置为 2.5.41 :

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

也许您必须删除您的 node-modules 文件夹并运行 npm install 才能进行全新安装。

【讨论】:

  • 谢谢!我想使用 ^ 是一个冒险的想法,看看这似乎发生的频率。
【解决方案2】:

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

根据this discussion,更正确的解决方案是将TypeScript 更新为2.x 分支的最新稳定次要版本,截至目前(2017 年2 月12 日)为2.1.6。您在构建日志中遇到的错误表明您使用的是过时的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"

希望对您有所帮助。很抱歉给您带来不便。

【讨论】:

  • 如何升级?这是我昨天的第一个想法,我用谷歌搜索了如何更新它并运行 npm 命令,但是当我运行 webpack 时,它仍然说我使用的是旧版本。
  • @Josh,我看到在你的package.json 中有一行"typescript": "2.0.10"。您能否将其更新为"typescript": "^2.0.10" 并运行npm update?它对你的情况有帮助吗?提前致谢。
  • 这不是一个合适的建议。 Angular 2.x not 支持 TS 2.1.X。 Angular 4.x 将添加该支持。如果您升级到 Typescript 2.1.X,那么您可能会遇到 AoT 等问题。
  • 无论如何,2.1.x 支持计划被向后移植到 Angular 2.x 中,所以即使现在不是这样,我的答案将来也会更正确。此外,当您有一个非 Angular2 项目时,此答案在其他情况下可能会有所帮助。@SoFLy,非常感谢您的评论,我会更新我的答案。
【解决方案3】:

即使使用 Angular 2+,我也遇到了这个问题。什么解决了我的问题,而不是降级 Jasmine 是更新 Typescript。

我的步骤是:

  • 更改package.json 以指向新版本的打字稿
    • "typescript": "~2.0.9" -> "typescript": "^2.0.9"
  • 运行npm install
  • 此后错误消失。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-08
    • 1970-01-01
    • 2019-07-18
    • 2018-03-07
    • 2022-12-15
    • 2021-07-26
    • 1970-01-01
    • 2021-07-12
    相关资源
    最近更新 更多