6
votes

I have an Angular 4 application, which I am upgrading to Angular 5.

I am getting the following error.

ERROR in src/app/application/services/generated/variables.ts(1,10): error TS2305: Module '"..../node_modules/@angular/core/core"' has no exported member 'OpaqueToken'.

Code snippet is :

import { OpaqueToken } from '@angular/core';

export const BASE_PATH = new OpaqueToken('basePath');
export const COLLECTION_FORMATS = {
    'csv': ',',
    'tsv': '   ',
    'ssv': ' ',
    'pipes': '|'
}

This code is been generated by swagger editor.

5
It was removed. : core: OpaqueToken has been removed as it was deprecated since v4. Use InjectionToken instead. (#18971) (3c4eef8)elasticrash
Some details on it's use here: stackoverflow.com/questions/43419050/…match
If you are updating from 4.x.x to 5.x.x, you should at least read the list of breaking changes in the changelog github.com/angular/angular/blob/master/…Jota.Toledo
Please see my answer. Note: I'm a technical reviewer of the typescript language families of the codegenKeniSteward

5 Answers

3
votes

The OpaqueToken got removed. You have to use the InjectionToken instead. I am facing the same problem. At the Moment the "best" solution is to replace the tokens after each code-gen build. But thats not a permanent solution.

Please contribute to this issue: https://github.com/swagger-api/swagger-codegen/issues/7324

3
votes

includes folling in the package.json file

"@angular/flex-layout": "^2.0.0-beta.12"

Try deleting the node_modules folder, delete the package.json file then running the following command i hope this problem was resolved

npm install

please refer following link for this issue https://github.com/angular/flex-layout/issues/494#issuecomment-343355178

1
votes

Please see https://github.com/swagger-api/swagger-codegen/issues/7324#issuecomment-368548716

If you are wanting to use Angular 5, you need to use the version of swagger-codegen that supports version switching.

That this time the lowest stable version of that is 2.3.0

In that you can define (for custom config) ngVersion to whatever version you want. As long as that semVer is above 4.0 it will generate injection token instead of OpaqueToken.

1
votes

I had this error when I updating angular 4 to 5

I fixed this issue by change package.json file

"@agm/core": "1.0.0-beta.1" to "@agm/core": "1.0.0-beta.5"

after run npm update

0
votes

This happened when I upgraded to angular 5.2.0. I ended up having to do the following:

Edited package.json: Had to change my version for @angular/compiler-cli. In my case I had to bring it back to 5.2.0, as it somehow got to 5.2.10.

Deleted the node_modules directory.

Ran: npm install

Installed: npm install @angular/flex-layout.