uirouter/angular-hybrid AoT build bootstrapModuleFactory promise injector fails to get UIRouter

Multi tool use
Multi tool use












0















I've got a sample uirouter/angular-hybrid app, successfully built with @ngtools/webpack AngularCompiler plugin and running. I've updated the main.aot.ts boot function to use bootstrapModuleFactory and can get the injector from the platformRef available in the promise success handler. But injector.get(UIRouter) fails with "Cannot read property 'config' of null."



platformBrowser().bootstrapModuleFactory(AppModuleNgFactory).then((platformRef) => {
const urlService: UrlService = platformRef.injector.get(UIRouter).urlService;
function startUIRouter() {
urlService.listen();
urlService.sync();
}

platformRef.injector.get<NgZone>(NgZone).run(startUIRouter);
});


I confirmed that the injector.get(NgZone) will succeed and injector.get(UIRouter) will fail. I tried moving the call to injector.get(UIRouter) inside the NgZone run func without success.



I also tried moving the upgrade.bootstrap call into the promise success function above to ensure it had booted first, without fixing the problem.



A simple angularjs component is rendering fine, so the boot process seems to be succeeding, except for not being able to call the listen() and sync() functions on the UIRouter.urlService.



I also confirmed the development config and non-aot production config, for this same sample app, do not have this problem and seem to be working fine.



Using versions:



uirouter/angular-hybrid v6.0.2



angular packages at v7.1.4, but also failed with 6.0.0 (which is the angular version in the package.json in the docs for uirouter/angular-hybrid v6.0.2)



Thanks for any ideas.










share|improve this question



























    0















    I've got a sample uirouter/angular-hybrid app, successfully built with @ngtools/webpack AngularCompiler plugin and running. I've updated the main.aot.ts boot function to use bootstrapModuleFactory and can get the injector from the platformRef available in the promise success handler. But injector.get(UIRouter) fails with "Cannot read property 'config' of null."



    platformBrowser().bootstrapModuleFactory(AppModuleNgFactory).then((platformRef) => {
    const urlService: UrlService = platformRef.injector.get(UIRouter).urlService;
    function startUIRouter() {
    urlService.listen();
    urlService.sync();
    }

    platformRef.injector.get<NgZone>(NgZone).run(startUIRouter);
    });


    I confirmed that the injector.get(NgZone) will succeed and injector.get(UIRouter) will fail. I tried moving the call to injector.get(UIRouter) inside the NgZone run func without success.



    I also tried moving the upgrade.bootstrap call into the promise success function above to ensure it had booted first, without fixing the problem.



    A simple angularjs component is rendering fine, so the boot process seems to be succeeding, except for not being able to call the listen() and sync() functions on the UIRouter.urlService.



    I also confirmed the development config and non-aot production config, for this same sample app, do not have this problem and seem to be working fine.



    Using versions:



    uirouter/angular-hybrid v6.0.2



    angular packages at v7.1.4, but also failed with 6.0.0 (which is the angular version in the package.json in the docs for uirouter/angular-hybrid v6.0.2)



    Thanks for any ideas.










    share|improve this question

























      0












      0








      0








      I've got a sample uirouter/angular-hybrid app, successfully built with @ngtools/webpack AngularCompiler plugin and running. I've updated the main.aot.ts boot function to use bootstrapModuleFactory and can get the injector from the platformRef available in the promise success handler. But injector.get(UIRouter) fails with "Cannot read property 'config' of null."



      platformBrowser().bootstrapModuleFactory(AppModuleNgFactory).then((platformRef) => {
      const urlService: UrlService = platformRef.injector.get(UIRouter).urlService;
      function startUIRouter() {
      urlService.listen();
      urlService.sync();
      }

      platformRef.injector.get<NgZone>(NgZone).run(startUIRouter);
      });


      I confirmed that the injector.get(NgZone) will succeed and injector.get(UIRouter) will fail. I tried moving the call to injector.get(UIRouter) inside the NgZone run func without success.



      I also tried moving the upgrade.bootstrap call into the promise success function above to ensure it had booted first, without fixing the problem.



      A simple angularjs component is rendering fine, so the boot process seems to be succeeding, except for not being able to call the listen() and sync() functions on the UIRouter.urlService.



      I also confirmed the development config and non-aot production config, for this same sample app, do not have this problem and seem to be working fine.



      Using versions:



      uirouter/angular-hybrid v6.0.2



      angular packages at v7.1.4, but also failed with 6.0.0 (which is the angular version in the package.json in the docs for uirouter/angular-hybrid v6.0.2)



      Thanks for any ideas.










      share|improve this question














      I've got a sample uirouter/angular-hybrid app, successfully built with @ngtools/webpack AngularCompiler plugin and running. I've updated the main.aot.ts boot function to use bootstrapModuleFactory and can get the injector from the platformRef available in the promise success handler. But injector.get(UIRouter) fails with "Cannot read property 'config' of null."



      platformBrowser().bootstrapModuleFactory(AppModuleNgFactory).then((platformRef) => {
      const urlService: UrlService = platformRef.injector.get(UIRouter).urlService;
      function startUIRouter() {
      urlService.listen();
      urlService.sync();
      }

      platformRef.injector.get<NgZone>(NgZone).run(startUIRouter);
      });


      I confirmed that the injector.get(NgZone) will succeed and injector.get(UIRouter) will fail. I tried moving the call to injector.get(UIRouter) inside the NgZone run func without success.



      I also tried moving the upgrade.bootstrap call into the promise success function above to ensure it had booted first, without fixing the problem.



      A simple angularjs component is rendering fine, so the boot process seems to be succeeding, except for not being able to call the listen() and sync() functions on the UIRouter.urlService.



      I also confirmed the development config and non-aot production config, for this same sample app, do not have this problem and seem to be working fine.



      Using versions:



      uirouter/angular-hybrid v6.0.2



      angular packages at v7.1.4, but also failed with 6.0.0 (which is the angular version in the package.json in the docs for uirouter/angular-hybrid v6.0.2)



      Thanks for any ideas.







      angular-ui-router angular2-aot angular-hybrid






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Jan 3 at 2:04









      Anatortoise HouseAnatortoise House

      4,49611617




      4,49611617
























          2 Answers
          2






          active

          oldest

          votes


















          0














          The problem was that the config object I was passing to UIRouterUpgradeModule.forRoot was being imported from a file that was using a default export of the object, and the object had a reference to a config function that was not being exported. This combination hid the problem during the build, and resulted in the symptom at runtime of not having the UIRouter object available to the injector.



          Replacing the default export with a named export triggered the AOT compiler to complain about the non-exported function reference. Additionally exporting the function then allowed a successful build, a happy injector, and a successful runtime boot.






          share|improve this answer































            0














            Are you facing any problems routing to the routes having ng2 components or it is working fine for you?






            share|improve this answer























              Your Answer






              StackExchange.ifUsing("editor", function () {
              StackExchange.using("externalEditor", function () {
              StackExchange.using("snippets", function () {
              StackExchange.snippets.init();
              });
              });
              }, "code-snippets");

              StackExchange.ready(function() {
              var channelOptions = {
              tags: "".split(" "),
              id: "1"
              };
              initTagRenderer("".split(" "), "".split(" "), channelOptions);

              StackExchange.using("externalEditor", function() {
              // Have to fire editor after snippets, if snippets enabled
              if (StackExchange.settings.snippets.snippetsEnabled) {
              StackExchange.using("snippets", function() {
              createEditor();
              });
              }
              else {
              createEditor();
              }
              });

              function createEditor() {
              StackExchange.prepareEditor({
              heartbeatType: 'answer',
              autoActivateHeartbeat: false,
              convertImagesToLinks: true,
              noModals: true,
              showLowRepImageUploadWarning: true,
              reputationToPostImages: 10,
              bindNavPrevention: true,
              postfix: "",
              imageUploader: {
              brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
              contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
              allowUrls: true
              },
              onDemand: true,
              discardSelector: ".discard-answer"
              ,immediatelyShowMarkdownHelp:true
              });


              }
              });














              draft saved

              draft discarded


















              StackExchange.ready(
              function () {
              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54015461%2fuirouter-angular-hybrid-aot-build-bootstrapmodulefactory-promise-injector-fails%23new-answer', 'question_page');
              }
              );

              Post as a guest















              Required, but never shown

























              2 Answers
              2






              active

              oldest

              votes








              2 Answers
              2






              active

              oldest

              votes









              active

              oldest

              votes






              active

              oldest

              votes









              0














              The problem was that the config object I was passing to UIRouterUpgradeModule.forRoot was being imported from a file that was using a default export of the object, and the object had a reference to a config function that was not being exported. This combination hid the problem during the build, and resulted in the symptom at runtime of not having the UIRouter object available to the injector.



              Replacing the default export with a named export triggered the AOT compiler to complain about the non-exported function reference. Additionally exporting the function then allowed a successful build, a happy injector, and a successful runtime boot.






              share|improve this answer




























                0














                The problem was that the config object I was passing to UIRouterUpgradeModule.forRoot was being imported from a file that was using a default export of the object, and the object had a reference to a config function that was not being exported. This combination hid the problem during the build, and resulted in the symptom at runtime of not having the UIRouter object available to the injector.



                Replacing the default export with a named export triggered the AOT compiler to complain about the non-exported function reference. Additionally exporting the function then allowed a successful build, a happy injector, and a successful runtime boot.






                share|improve this answer


























                  0












                  0








                  0







                  The problem was that the config object I was passing to UIRouterUpgradeModule.forRoot was being imported from a file that was using a default export of the object, and the object had a reference to a config function that was not being exported. This combination hid the problem during the build, and resulted in the symptom at runtime of not having the UIRouter object available to the injector.



                  Replacing the default export with a named export triggered the AOT compiler to complain about the non-exported function reference. Additionally exporting the function then allowed a successful build, a happy injector, and a successful runtime boot.






                  share|improve this answer













                  The problem was that the config object I was passing to UIRouterUpgradeModule.forRoot was being imported from a file that was using a default export of the object, and the object had a reference to a config function that was not being exported. This combination hid the problem during the build, and resulted in the symptom at runtime of not having the UIRouter object available to the injector.



                  Replacing the default export with a named export triggered the AOT compiler to complain about the non-exported function reference. Additionally exporting the function then allowed a successful build, a happy injector, and a successful runtime boot.







                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Jan 3 at 19:07









                  Anatortoise HouseAnatortoise House

                  4,49611617




                  4,49611617

























                      0














                      Are you facing any problems routing to the routes having ng2 components or it is working fine for you?






                      share|improve this answer




























                        0














                        Are you facing any problems routing to the routes having ng2 components or it is working fine for you?






                        share|improve this answer


























                          0












                          0








                          0







                          Are you facing any problems routing to the routes having ng2 components or it is working fine for you?






                          share|improve this answer













                          Are you facing any problems routing to the routes having ng2 components or it is working fine for you?







                          share|improve this answer












                          share|improve this answer



                          share|improve this answer










                          answered Jan 8 at 18:12









                          Himanshu GuptaHimanshu Gupta

                          164




                          164






























                              draft saved

                              draft discarded




















































                              Thanks for contributing an answer to Stack Overflow!


                              • Please be sure to answer the question. Provide details and share your research!

                              But avoid



                              • Asking for help, clarification, or responding to other answers.

                              • Making statements based on opinion; back them up with references or personal experience.


                              To learn more, see our tips on writing great answers.




                              draft saved


                              draft discarded














                              StackExchange.ready(
                              function () {
                              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54015461%2fuirouter-angular-hybrid-aot-build-bootstrapmodulefactory-promise-injector-fails%23new-answer', 'question_page');
                              }
                              );

                              Post as a guest















                              Required, but never shown





















































                              Required, but never shown














                              Required, but never shown












                              Required, but never shown







                              Required, but never shown

































                              Required, but never shown














                              Required, but never shown












                              Required, but never shown







                              Required, but never shown







                              WX7px1tEIbT,T 3btH ano
                              kiraTE,gdFIzKo,kEKfcn 1zbELO42W Oe5zL1

                              Popular posts from this blog

                              Monofisismo

                              Angular Downloading a file using contenturl with Basic Authentication

                              Olmecas