Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cannot build using AOT #17

Closed
blackholegalaxy opened this issue Jan 28, 2017 · 8 comments
Closed

Cannot build using AOT #17

blackholegalaxy opened this issue Jan 28, 2017 · 8 comments

Comments

@blackholegalaxy
Copy link

By building Angular2 app worked perfectly until I installed angular2-markdown.

Here is the error at compilation time:

ERROR in Error encountered resolving symbol values statically. Calling function 'makeParamDecorator', function calls are not supported. Consider replacing the function or lambda with a reference to an exported function, resolving symbol Injectable in node_modules/angular2-markdown/node_modules/@angular/core/src/di/metadata.d.ts, resolving symbol OpaqueToken in node_modules/angular2-markdown/node_modules/@angular/core/src/di/opaque_token.d.ts, resolving symbol OpaqueToken in node_modules/angular2-markdown/node_modules/@angular/core/src/di/opaque_token.d.ts

ERROR in ./src/main.ts
Module not found: Error: Can't resolve './$$_gendir/app/app.module.ngfactory' in 'src'
@ ./src/main.ts 5:0-74
@ multi main

ERROR in .//@angular/core/src/linker/system_js_ng_module_factory_loader.js
Module not found: Error: Can't resolve 'src$$_gendir' in 'node_modules@angular\core\src\linker'
@ ./
/@angular/core/src/linker/system_js_ng_module_factory_loader.js 71:15-36 87:15-102
@ .//@angular/core/src/linker.js
@ ./
/@angular/core/src/core.js
@ ./~/@angular/core/index.js
@ ./src/main.ts
@ multi main

Removing the angular2-markdown module solves the problem but I need it.

@jfcere
Copy link

jfcere commented Jan 28, 2017

Try to pull on the master branch as #14 solved this problem but it is not currently released on npm.
Aslo you will need to add .forRoot() on MarkdownModule (see README.md).

package.json
"angular2-markdown": "git://github.com/dimpu/angular2-markdown.git#master",

Please give us a feedback if it solved your issue.

@blackholegalaxy
Copy link
Author

blackholegalaxy commented Jan 29, 2017

Thanks it seems to solve the problem. Will wait for a release to change back my package.json to semver.

Un bonjour de Québec ;)

@blackholegalaxy
Copy link
Author

blackholegalaxy commented Jan 29, 2017

Ok I tried to build with master as version to use in package.json. I first thought it was doing the job but it was because my colleague actually removed the module form imports (to wait until the module is fixed).

app.module.ts contains:
MarkdownModule.forRoot(),

and I encounter the same error than stated in the first post.

I tried to remove and rebuild npm dependencies with no success.

@jfcere
Copy link

jfcere commented Jan 29, 2017

Sorry about that, seems #14 solved the problem for JiT but not for AoT, ill try it and come back to you shortly.

@jfcere
Copy link

jfcere commented Jan 31, 2017

After lots of search through Github issues I found that the problem with AoT would be related to Angular-CLI not being able to resolve node modules inside other node modules.

Workaround

I've been able to compile an application with AoT using angular2-markdown by doing some modifications to tsconfig.json:

  • Add relative paths to node_modules for angular dependencies
  • Exclude test.ts file (loading TestBed pull on dependencies that are not needed when serving app)

Also I had to make a small fix in markdown.component by changing onChanges signature to add the required simpleChanges parameter.

Here is the tsconfig.json configuration that i used ...

Warning!
You should copy your tsconfig.json and create a new one for AoT compilation like tsconfig-aot.json as stated on Angular official website here othwerwise your tests won't run after excluding test.ts

{
  "compilerOptions": {
    "baseUrl": "",
    "declaration": false,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "lib": ["es2015", "dom"],
    "mapRoot": "./",
    "module": "es2015",
    "moduleResolution": "node",
    "outDir": "../dist/out-tsc",
    "sourceMap": true,
    "target": "es5",
    "typeRoots": [
      "../node_modules/@types"
    ],
    "paths": {
+      "@angular/common": ["../node_modules/@angular/common"],
+      "@angular/compiler": ["../node_modules/@angular/compiler"],
+      "@angular/core": ["../node_modules/@angular/core"],
+      "@angular/forms": ["../node_modules/@angular/forms"],
+      "@angular/http": ["../node_modules/@angular/http"],
+      "@angular/platform-browser": ["../node_modules/@angular/platform-browser"],
+      "@angular/platform-browser-dynamic": ["../node_modules/@angular/platform-browser-dynamic"],
+      "@angular/router": ["../node_modules/@angular/router"],
+      "rxjs/Rx": ["../node_modules/rxjs/Rx"],
+      "rxjs/add/operator/toPromise": ["../node_modules/rxjs/add/operator/toPromise"]
    }
  },
  "exclude": [
+    "test.ts"
  ],
  "angularCompilerOptions": {
    "genDir": "aot",
    "skipMetadataEmit" : true
 }
}

That being said there would be a simpler way to fix the problem ...

What would really fix it

Angular2-Markdown would have to be transpiled to javascript with it definitely typed file when pushed on NPM. That way there would be no more problem with node modules resolving as it would be included with the bundled javascript file.

As a contributor I dont have the access on NPM I can't do it myself ...

@blackholegalaxy
Copy link
Author

blackholegalaxy commented Feb 5, 2017

Did you removed your branch where you used to fix the problem?

@jfcere
Copy link

jfcere commented Feb 7, 2017

Yes, althought this is a great third party it takes too long for pull requests to be merged and released on npm so I switched to another package (which supports AoT) : ng2-markdown-to-html.

The solution is in my previous post if you want to submit the changes.

@dimpu
Copy link
Owner

dimpu commented Feb 19, 2017

please upgrade it to 1.3.7

@dimpu dimpu closed this as completed Feb 19, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants