Coder Social home page Coder Social logo

Comments (19)

christopherthielen avatar christopherthielen commented on April 27, 2024 1

I also think this can be caused by multiple copies of @uirouter libraries in your node_modules

Try running:

yarn why @uirouter/core
yarn why @uirouter/angular
yarn why @uirouter/angularjs
yarn why @uirouter/angular-hybrid

or

npm ls @uirouter/core
npm ls @uirouter/angular
npm ls @uirouter/angularjs
npm ls @uirouter/angular-hybrid

Look for any uirouter packages with two different versions listed.

from core.

eydrian avatar eydrian commented on April 27, 2024 1

for angularjs/angular-hybrid when uirouter/[email protected] is explicitly installed, exactly this error will happen!
Only works with @uirouter/[email protected]

from core.

matthewborgman avatar matthewborgman commented on April 27, 2024 1

@eydrian or @mansevmann did you ever solve this?

from core.

IgorWolbers avatar IgorWolbers commented on April 27, 2024 1

I had the same problem.

npm ls @uirouter/core

Output:

[email protected] 
+-- @uirouter/[email protected]
| `-- @uirouter/[email protected]
+-- @uirouter/[email protected]
| `-- @uirouter/[email protected]
`-- @uirouter/[email protected]
  `-- @uirouter/[email protected] deduped

As of npm cli v8.3.0 (2021-12-09) this can be solved using the overrides field of package.json

First add an explicit install of @uirouter/core. I used version 6.0.8 because I am not sure if the latest version 6.0.9 is supported on @uirouter/angularjs.

npm i @uirouter/[email protected] --P -E

Your package.json should now have this line added to it.

"@uirouter/core": "6.0.8",

Next specify that this installed version of @uirouter/core should be used by the dependent libraries. Manually update your package.json and add/update the overrides section.

"overrides": {
  "@uirouter/rx": {
    "@uirouter/core": "$@uirouter/core"
  },
  "@uirouter/angular": {
    "@uirouter/core": "$@uirouter/core"
  }
}

Run your install one more time.

npm i

And finally check the dependent versions one last time.

npm ls @uirouter/core

[email protected] 
+-- @uirouter/[email protected] overridden
| `-- @uirouter/[email protected] deduped
+-- @uirouter/[email protected]
| `-- @uirouter/[email protected] deduped
+-- @uirouter/[email protected] overridden
`-- @uirouter/[email protected] overridden
  `-- @uirouter/[email protected] deduped

from core.

christopherthielen avatar christopherthielen commented on April 27, 2024

Hi @marius-hi ,

services.$q should be automatically assigned before each test by the test framework. Try to inject the UIRouter class (or AngularJS $uiRouter) before each test to cause the initialization code to run.

from core.

marius-hi avatar marius-hi commented on April 27, 2024

Hi @christopherthielen,

Most probably this issue is caused by multiple copies of @uirouter:

├── @uirouter/[email protected]
├── @uirouter/[email protected]
└─┬ @uirouter/[email protected]
└── @uirouter/[email protected]

What is the possible solution to prevent this issue as we will still need to rely on Angular-hybrid and AngularJs for some time until the project is fully upgraded to Angular?

from core.

christopherthielen avatar christopherthielen commented on April 27, 2024

it is expected to have all four of those packages, as long as none are duplicated.

from core.

mansevmann avatar mansevmann commented on April 27, 2024

It's true what @eydrian states. Version @uirouter/[email protected] breaks our teamcity build with the error message of "Cannot read property 'when' of undefined"

from core.

christopherthielen avatar christopherthielen commented on April 27, 2024

@eydrian @mansevmann can you show the output of yarn why @uirouter/core or npm ls @uirouter/core please

from core.

eydrian avatar eydrian commented on April 27, 2024
[email protected] /PATH_TO_REPO
├─┬ @uirouter/[email protected]
│ └── @uirouter/[email protected] deduped
├─┬ @uirouter/[email protected]
│ └── @uirouter/[email protected] deduped
├── @uirouter/[email protected]
├─┬ @uirouter/[email protected]
│ └── @uirouter/[email protected] deduped
└─┬ @uirouter/[email protected]
  └── @uirouter/[email protected] deduped

@christopherthielen

from core.

eydrian avatar eydrian commented on April 27, 2024

nope

from core.

ThibaudAV avatar ThibaudAV commented on April 27, 2024

haha and now ? I have the same problem apparently

from core.

ThibaudAV avatar ThibaudAV commented on April 27, 2024

I don't know if this is it. but apparently
ui-router/angularjs uses lib-esm which uses lib-esm for import coreservices
ui-router/angular uses fesm2015 and so uses llib for import coreservice
so for Angular coreservice was never init

from core.

ThibaudAV avatar ThibaudAV commented on April 27, 2024

Probably due to my project which looks like frankenstein monster. With this configuration in webpack it seems to solve the problem

      {
        test: /\.mjs$/,
        include: /node_modules/,
        type: 'javascript/auto',
        resolve: { mainFields: ['es2015', 'browser', 'module', 'main'] }, // <-- this ligne
      },

apparently the resolve.mainFields that I added globally is not taken into account I have to give it again for the mjs.
now core lib-esm is loaded in both cases. and I no longer have this error

from core.

WLyKan avatar WLyKan commented on April 27, 2024

I use pnpm to install and run start. It fails with error: cannot read properties of undefined (reading 'when')
so i remove node_modules and use yarn.
It works fine.

from core.

jozzeed avatar jozzeed commented on April 27, 2024

Hi, I am having a similar issue but in my actual live code. It works fine on angular 13's side but not in my AngularJs. As soon as I add the "ui.router.upgrade" dependency to my "app" module, I receive the following error: ERROR TypeError: Cannot read properties of undefined (reading 'when').

As others have mentioned, it comes from the following line of code: this.promise = this.resolved ? services.$q.when(this.data) : undefined;

Almost looks like Resolvable is not able to get any services from my AngularJs. Any idea why?

from core.

zavrakv avatar zavrakv commented on April 27, 2024

Had this problem on angularJS+Angular hybrid project because of incorrect require() statements. I had to install @angular-builders/custom-webpack and set such a config for template loading of old JS:

module: {
    rules: [
        {
            test: /\.html$/,
            type: 'asset/source',
            include: [
                path.resolve(__dirname, "YourParentPathToLegacyTemplates"),
            ],
        }
    ]
}

And I had to change require statements from require("raw-loader!../path-to-template/template.html").default to require("../path-to-template/template.html")
No loader + no .default at the end of the statement
It solved my problem, tested on Angular 12 and 13

from core.

eaemilio avatar eaemilio commented on April 27, 2024

Hi, I am having a similar issue but in my actual live code. It works fine on angular 13's side but not in my AngularJs. As soon as I add the "ui.router.upgrade" dependency to my "app" module, I receive the following error: ERROR TypeError: Cannot read properties of undefined (reading 'when').

As others have mentioned, it comes from the following line of code: this.promise = this.resolved ? services.$q.when(this.data) : undefined;

Almost looks like Resolvable is not able to get any services from my AngularJs. Any idea why?

@jozzeed Have you been able to resolve this? I'm having the same issue when adding 'ui.router.upgrade' to my angularjs module.

from core.

JonayLo avatar JonayLo commented on April 27, 2024

For anyone that is still facing this issue, fixed it by also updating uirouter/angularjs from v 1.0.30 to 1.1.0

from core.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.