Cannot read properties of undefined (reading 'on')

0

Cześć, mam projekt w Vue.js ( 2.7 ), przy dołączaniu i zarejestrowaniu zewnętrznej paczki z node_modules/ dostaje taki błąd w konsoli:

Cannot read properties of undefined (reading 'on')

Z tego co wyczytałem, to może być błąd z wieloma instancjami Vue?
https://github.com/vuejs/vue/issues/12627

ktoś miał coś podobnego? Mój moduł ( customowy ) nie działa.

1

"Zewnętrzna paczka", czyli biblioteka ściągnięta z npm'a od innego autora, czy jednak chodzi Ci o projekt monorepo?

Sprawdź w package.json, czy wersje Vue aplikacji i biblioteki się pokrywają.

0
Xarviel napisał(a):

"Zewnętrzna paczka", czyli biblioteka ściągnięta z npm'a, tak?

Sprawdź w package.json, czy wersje Vue aplikacji i biblioteki się pokrywają.

Biblioteka stworzona u nas, ładowana do node_modules
Wersje Vue się pokrywają, tj. 2.7.10

2

Okej, czyli projekt monorepo (?) z mniej więcej taką strukturą?

packages/
  app/
    node_modules/
    src/
    package.json
  lib/
    node_modules/
    src/
    package.json

Nie mam 100% pewności, ale podobny problem miałem w Reactcie, gdy dzieliłem aplikacje na mniejsze kawałki i okazało się, że miałem błędnie skonfigurowany projekt i rozwiązaniem było odpowiednie ustawienie workspaces i zamienienie struktury w taki sposób, żeby był tylko jeden folder node_modules w całym projekcie.

node_modules/
packages/
  app/
    src/
    package.json // <-- Tutaj instalujemy bibliotekę "lib"
  lib/
    src/
    package.json // <-- Tutaj wersja Vue trafia do peerDepedencies
lerna.json
package.json // <-- główny plik package.json

https://docs.npmjs.com/cli/v7/using-npm/workspaces (nie pamiętam, czy konfiguracja zależy od rodzaju pakiet menadżera npm vs yarn vs pnpm itd trzeba byłoby to sprawdzić)
https://www.npmjs.com/package/lerna (można użyć innego narzędzia do zarządzania projektem monorepo)

Główny plik package.json

{
  "private": true,
  "name": "my-project",
  "workspaces": [
    "packages/*"
  ]",
  "devDepedencies": {
    "lerna": "..."
  },
  // ...
}

Konfiguracja lerna.json

{
  "useWorkspaces": true,
  "packages": ["packages/*"],
  // ...
}

EDIT:

Multirepo :(

0
Xarviel napisał(a):

Okej, czyli projekt monorepo (?) z mniej więcej taką strukturą?

packages/
  app/
    node_modules/
    src/
    package.json
  lib/
    node_modules/
    src/
    package.json

Nie mam 100% pewności, ale podobny problem miałem w Reactcie, gdy dzieliłem aplikacje na mniejsze kawałki i okazało się, że miałem błędnie skonfigurowany projekt i rozwiązaniem było odpowiednie skonfigurowanie workspaces i zamienienie struktury w taki sposób, żeby był tylko jeden folder node_modules w całym projekcie.

node_modules/
packages/
  app/
    src/
    package.json // <-- Tutaj instalujemy bibliotekę "lib"
  lib/
    src/
    package.json // <-- Tutaj wersja Vue trafia do peerDepedencies
lerna.json
package.json // <-- główny plik package.json

https://docs.npmjs.com/cli/v7/using-npm/workspaces (nie pamiętam, czy konfiguracja zależy od rodzaju pakiet menadżera npm vs yarn vs pnpm itd)
https://www.npmjs.com/package/lerna (można użyć innego narzędzia do zarządzania projektem monorepo)

Główny plik package.json

{
  "private": true,
  "name": "my-project",
  "workspaces": [
    "packages/*"
  ]",
  "devDepedencies": {
    "lerna": "..."
  },
  // ...
}

Konfiguracja lerna.json

{
  "useWorkspaces": true,
  "packages": ["packages/*"],
  // ...
}

Dzięki za odpowiedź,
To jest projekt z jednym node_modules customowy moduł ma inne repo, jest zaciągany poprzed package.json do projektu. Z jednego node_modules wstrzykuję go do apki

1

No to spróbuj ustawić w tym drugim repozytorium, żeby biblioteka Vue była w zakładce peerDepedencies

{
  "depedencies": {
    "...": "..."
  },
  "peerDepedencies": {
    "vue": "2.7.0"
  }
}

i skonfiguruj bundler, żeby podczas generowania projektu nie kompilował tego Vue i nie dołączał go do źródła (folder dist / build).

Teoretycznie powinno to pomóc.

1 użytkowników online, w tym zalogowanych: 0, gości: 1