Angular 5

Tags: #<Tag:0x00007f8a1c443588> #<Tag:0x00007f8a1c4432b8>

Nyilván felfrissítettem az Anular 5-re.
És nyilván bajom van vele :D
A gond az, hogy be van kapcsolva a tsconfig-json fájlban az allowJs, mert van egy külső js fájlom.
De megvan adva az outDir is. (dist).
ng serve parancsra letörli a korábbi dist mappát és nem hoz létre újat. és a következő hibával száll el:

error TS5055: Cannot write file '/path/to/source/src/javascripts/mousetrap.min.js' because it would overwrite input file.
Adding a tsconfig.json file will help organize projects that contain both TypeScript and JavaScript files. Learn more at https://aka.ms/tsconfig.

És a leírásban annyi van, hogy ha használok allowJs-t, akkor legyen outDir is. És van is, csak nem abba dolgozik.
az ng build --out-path ./dist is ugyanezzel a hibával száll el.

Nem tudod direktben betenni a js-edet az index.html-be es kesz?

Typescriptben hivatkozok rá. Úgy is működhet? (Amúgy nem akarom minden oldalon használni)

Muti a tsconfigot :)

Az exclude most került bele, mert próbálgattam megoldani a problémát. Ezen kívül teljesen ugyanez volt a config Angular 4.4.5-nél. (vagyis talán ./dist/out-ts volt a kimenet talán…)

{
  "compileOnSave": false,
  "compilerOptions": {
    "outDir": "./dist",
    "sourceMap": true,
    "declaration": false,
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "es5",
    "typeRoots": [
      "node_modules/@types"
    ],
    "allowJs": true,
    "lib": [
      "es2017",
      "dom"
    ]
  },
  "exclude": [
    "node_modules",
    "src/javascripts",
    "**/*.spec.ts"
  ]
}

Szerintem jo lesz igy, esetleg meg tennel bele egy rootDir-t is?

Szerk: Meg azt meg megprobalhatnad, hogy az outDirt is felveszed az exclude array-ba.

Ezt próbáltam. A gond az, hogy kitörli a dist mappát és nem hozza létre újra. Próbáltam úgy is, hogy kézzel hozom létre, de úgy is kitörli ha nyomok ng serve vagy ng build-et.

Ezt megpróbálom.

Egyébként megtaláltam ezt az issue-t: https://github.com/angular/angular/issues/19757
Azt nem írtam, hogy ha bekapcsolom az aot-ot, akkor a node_modules-ban lévő fájlokra is ezt a hibát dobja. Próbáltam úgy is, hogy kiveszem az allowJs-t, de akkor is dobja a hibát.
Itt írnak egy ilyen megoldást:

change CompilerHost.resolveModuleName to only set isExternalModule to false if the file is a this.isSourceFile and it is a .d.ts file. We can’t remove this logic altogether as otherwise our generated files for files in node_modules would not be emitted by TypeScript as TypeScript thinks they are not sources, as the file the original file in node_modules is not.

De ezt nem tudom hogy kell megcsinálni. :)

RootDir nem működik…
Még nem értem egészen mindig a működését a fordítónak, mert még mindig nem olvastam el a működést :D
De ha jól értelmezem, akkor van egy .angular-cli.json fájlom és ebben van belinkelve a mousetrap.js fájl is.
ez hosszabb, ezért ide tettem: angular-cli.json fájl: https://pastebin.com/ww5BL0w5
Ez meghívja az alkalmazásban lévő tsconfig.app.json fájlt, abban csak ez van: (az exclude-ot lehet, hogy most tettem bele):

{
  "extends": "../tsconfig.json",
  "compilerOptions": {
    "outDir": "../dist/app",
    "baseUrl": "./",
    "module": "es2015",
	"allowJs": true,
    "types": []
  },
  "exclude": [
    "test.ts",
    "**/*.spec.ts",
    "./javascripts"
  ]
}

Ls ez hívja meg (gondolom a globál projekt beállításokat) a tsconfig.json fájlt, amit már korábban belinkeltem.
Amúgy hiába próbálok meg mindent, pélgádul úgy indítani, hogy ne törölje az putput dirt:

ng build --output-path dist --delete-output-path false

De ez sem működik, ugyanaz a hiba. :(

Na, a végeredmény az lett, hogy nem szenvedek tovább. :) Visszaáltam a 4 verzióra. Bár azt meg frissítettem a legutols verzióra és az zökkenő mentesen működik. Majd visszanézek hónapokkal később az 5. verzióra :D

szerk:
Persze a githubon feliratkoztam a két issue-re ezzel kapcsolatban, csak látni fogom abból, hogy mikor érdemes megpróbálni ismét. Szóval megtaláltam az angular-cli és sima angular issuek között a problémákat és mindkét helyen még nyitva van. Ráadásul az angular-cli-n 22 napja hozták létre az issuet és mégis kiadták így a “stabil” verziót, hogy benne van ez a kritikus hiba… hát szép…
angular-cli issue:

angular issue:

Nem tudom mi a fenét csinálnak a fejlesztők de a js hiba még mindig fenn áll.
Elsőre megörültem, hogy talán a következő hibajavításban működni fog, de aztán tovább olvasva kételyeim támadtak…

A második linken ilyeneket irkáltak az utolsó 24 órában:

@oudekaas:

same issue here I am reverting back to angular 4, is anyone working on this?

@elvisfernandes válasza:

@oudekaas: apparently @chuckjaz already fixed it. AFAIK it will be available in 5.1.2 release (probably this week).

@yadue válasza:

@chuckjaz fix doesn’t work for all cases. Still doesn’t work if you have any javascript file in a project.

@chuckjaz válasza:

@yadue Can you submit a separate bug as this is not the same issue.
This issue was that is was treating .js files as included in the project where it should have only included .d.ts files for which factories are generated.

Majd erre egy ilyen (@aaronfrost):

Looking back at this issue, it looks like 20+/- days ago people also started commenting on the variation that @yadue was commenting about. …

@yadue válaszáig jutottam :D:

@aaronfrost I agree, @chuckjaz I could create new one but looking at this task I don’t like idea waiting another 2 months for fix.

És elérkeztünk egy újabb hibajegyhez ezzel kapcsolatban:

Kb 4 napja megjelent az 5.2.0, de a hibát még mindig nem javították :(
Ezt tényleg komolyan gondolják, hogy ilyen súlyos hibát hónapok óta nem javítanak? Így hogy akarják, hogy használjuk / mindig a legfrissebbet használjuk!?

Az angular-cli -t hogyan tudnám törölni? Elvileg ezzel a paranccsal lehet: npm uninstall -g angular-cli
De nekem az npm már nincs fent a gépemen, úgyhogy ez nem működik. Ha valaki meg tudná mondani, hogy hol van a default telepítési mappája, az is jó lenne, és akkor manuálisan törölném az egészet.

The global packages get installed to:

/usr/local/lib/node_modules

and man pages get installed at (if supplied):

/usr/local/share/npm

2 Likes

Köszönöm, siker. :)

1 Like

Hihetetlen, de az angular cli 1.6.8-cal megoldották a problémámat. Tehát Angular 5.2.4 és cli 1.6.8 és lefordul hiba nélkül a korábbi angular 4.4.6-os projektem. Pontosabban azért a material desgin elnevezések miatt sok helyen át kellett írnom az md-t mat-ra, de ez már nem egetverő. No meg a http-t korábban lecseréltem már httpclient-re így ezzel sem volt gondom most.
Egyetlen egy apróbb hibát látok, hogy van egyetlen egy js fájlom (amiatt nem fordult le eddig megfelelően) és annak a js.map fájlját nem találja a böngésző. Mondjuk ezt eleve nem tudom, hogy vagy hogyan állítja elő, de ettől függetlenül a js működik.
Tehát most végre minden a legfrissebb nálam!

És a legnagyobb poén számomra, hogy most, hogy megoldódott a problémám, látom, hogy már kint a 6-os betája. Bravó, nemsokára indulhat elölről a szenvedés.

Meg most megjelent a cli-nek is az új bétája és ott 6.0.0 bétának nevezik. Lehet, hogy (végre) ugyanazt a verzió számot fogja kapni a cli, mint az angular így össze lehet majd egyeztetni, hogy melyik verzióhoz melyik verzió való?

Valamint most tűnt csak fel, hogy az Angular 4 az LTS volt. Itt is minden második verzió lesz majd LTS?

Itt egy elég jó videó a 6-ról:

1 Like

Nekem még meg kell várnom az ng-recaptcha modult, hogy működjön. Bár már kint van belőle 3 napja egy beta verzió, ami már támogatja az új Angular core 6-ost, de most még nem életbevágó a frissítés :).