Closed ziacik closed 4 years ago
I've got same error with "ng build --prod --build-optimizer=false" can build
I've also got the same error. I have temporarily solved the problem by downgrading tinymce to version 4.7.4. This issue might give some additional information: https://github.com/tinymce/tinymce/issues/4165
I'm getting the same issue:
ERROR in ./node_modules/tinymce/tinymce.js
Module build failed: Error: Invalid IIFE Structure
at updateEnumIife (/node_modules/@angular-devkit/build-optimizer/src/transforms/wrap-enums.js:307:15)
at visitBlockStatements (/node_modules/@angular-devkit/build-optimizer/src/transforms/wrap-enums.js:82:61)
at visitor (/node_modules/@angular-devkit/build-optimizer/src/transforms/wrap-enums.js:33:26)
at visitNode (/node_modules/@angular-devkit/build-optimizer/node_modules/typescript/lib/typescript.js:56836:23)
at visitFunctionBody (/node_modules/@angular-devkit/build-optimizer/node_modules/typescript/lib/typescript.js:56942:23)
at Object.visitEachChild (/node_modules/@angular-devkit/build-optimizer/node_modules/typescript/lib/typescript.js:57062:407)
at visitor (/node_modules/@angular-devkit/build-optimizer/src/transforms/wrap-enums.js:53:23)
at visitNode (/node_modules/@angular-devkit/build-optimizer/node_modules/typescript/lib/typescript.js:56836:23)
at Object.visitEachChild (/node_modules/@angular-devkit/build-optimizer/node_modules/typescript/lib/typescript.js:57052:44)
at visitor (/node_modules/@angular-devkit/build-optimizer/src/transforms/wrap-enums.js:53:23)
at visitNode (/node_modules/@angular-devkit/build-optimizer/node_modules/typescript/lib/typescript.js:56836:23)
at Object.visitEachChild (/node_modules/@angular-devkit/build-optimizer/node_modules/typescript/lib/typescript.js:57060:45)
at visitor (/node_modules/@angular-devkit/build-optimizer/src/transforms/wrap-enums.js:53:23)
at visitNode (/node_modules/@angular-devkit/build-optimizer/node_modules/typescript/lib/typescript.js:56836:23)
at Object.visitEachChild (/node_modules/@angular-devkit/build-optimizer/node_modules/typescript/lib/typescript.js:57106:49)
at visitor (/node_modules/@angular-devkit/build-optimizer/src/transforms/wrap-enums.js:53:23)
Downgrading didn't work for me though....
make sure to uninstall the previous tinymce first and then install the 4.7.4 build. it worked for me.
This really seems like an issue with TinyMCE and not angular cli. It looks like a breaking change was introduced after 4.7.4 build and it has yet to be fixed. https://github.com/tinymce/tinymce/issues/4165
make sure to uninstall the previous tinymce first and then install the 4.7.4 build. it worked for me.
make sure to uninstall the previous tinymce first and then install the 4.7.4 build. it worked for me.
Taht work for me.Thanks
Still broken with tinymce 4.9.2 and @angular/cli 7.2.2 but works fine with tinymce 4.7.4
Has anyone made progress here? Seems the issue is on the tinymce side, but the ticket is marked closed https://github.com/tinymce/tinymce/issues/4165
@ttrevorr Also just got some updates on the tinymce side and they are confident that the issue is with angular cli. See the latest comments. https://github.com/tinymce/tinymce/issues/4165
I looked into the angular-cli issue more and it appears to be an issue in their logic. The cause appears to be that they are using metaprogramming to parse the imported modules (not entirely sure why, but it looks to be for processing enums), however their logic seems to be incorrect because as @TheSpyder said it's perfectly valid to have an iife inside another iife in JS (even though it is probably an edge case).
As such, I'd suggest logging an issue with the Angular team so that they can investigate/fix their processing logic.
To add a little bit more detail, when TypeScript compiles an enum it ends up as JS something like this:
export var Direction; (function (Direction) { Direction[Direction["Up"] = 0] = "Up"; })(Direction || (Direction = {})); So what appears to be happening, is that the angular logic is incorrectly detecting the iife JS produced by TinyMCE to be an Enum and therefore saying it's invalid because it's not an enum.
Did anyone get a solution here? It still seems to break on prod build. Even the 4.7.4 build
Try importing tinymce.min.js
, worked for me.
Had the same error with silver theme, and imported theme.min.js
, it fixed error.
Try importing
tinymce.min.js
, worked for me. Had the same error with silver theme, and importedtheme.min.js
, it fixed error.
How did you do that ? i had to downgrade to 4.7.4 to make it build in production.
Try importing
tinymce.min.js
, worked for me. Had the same error with silver theme, and importedtheme.min.js
, it fixed error.How did you do that ? i had to downgrade to 4.7.4 to make it build in production.
I used dynamic import
public async initEditor(): Promise<void> {
this.editorManager = (await import('tinymce/tinymce.min.js')).default;
await import('tinymce/themes/silver/theme.min.js');
}
Any progress with this issue? Would be nice to be able to get the latest version and not having to do any special handling. Seems like TinyMCE has closed the issue on their end: https://github.com/tinymce/tinymce/issues/4165 https://github.com/tinymce/tinymce/issues/4483
In order to use tinymce.min.js in scripts in angular.json, I needed to remove any import of 'tinymce' that I was using in any file and declare const tinymce: any;
, which really makes me sad. I don't really see any other fix as I need to stay on Angular 7 until ng-bootstrap is ready and I need to stay on TinyMCE 4 until I have time to update a major version. Hope this helps any one else caught in a similar situation.
TinyMCE 5.0.8 should resolve this issue.
I tried the Angular prod build with the latest tinymce 5.0.8 and still getting the Error: Invalid IIFE Structure
TinyMCE 5.0.8 should resolve this issue.
Has it worked for anyone?
well... to be clear 5.0.8 removes the "double iife" issue that was logged against TinyMCE. I assumed it would fix the error if that was indeed the cause.
:tada: Yeah it compiles well with TinyMCE 5.0.8
.
Yeah it compiles well with TinyMCE
5.0.8
.
Thanks for the reply would you mind sharing your working code please? What do you have to do to get it working? Here is my attempt: https://github.com/puravupadhyay/TinymceAngular I'm following the integration steps from here: https://www.tiny.cloud/docs/integrations/angular2/
Fixed ng build --prod
succeeded!
I had an unnecessary import in my AppComponent.
Thanks for reporting this issue. This issue is now obsolete due to changes in the recent releases. Please update to the most recent Angular CLI version.
If the problem persists after upgrading, please open a new issue, provide a simple repository reproducing the problem, and describe the difference between the expected and current behavior.
This issue has been automatically locked due to inactivity. Please file a new issue if you are encountering a similar or related problem.
Read more about our automatic conversation locking policy.
This action has been performed automatically by a bot.
Versions
Repro steps
ng new kvak
cd kvak
npm install --save tinymce
nano src/app/app.component.ts
import { tinymce } from 'tinymce/tinymce';
dummy = tinymce;
inside the AppComponentng build --prod
Observed behavior
Desired behavior
Build success.