Less.js: Le constructeur de classe FileManager ne peut pas être appelé sans 'new'.

Créé le 17 août 2019  ·  64Commentaires  ·  Source: less/less.js

Il semble que la v3.10.0 casse ma construction, les journaux webpack ci-dessous :

ERROR in ./src/pages/score/components/current/no-join/index.less
Module build failed (from ./node_modules/[email protected]@mini-css-extract-plugin/dist/loader.js):
ModuleBuildError: Module build failed (from ./node_modules/[email protected]@less-loader/dist/cjs.js):


Class constructor FileManager cannot be invoked without 'new'
      in undefined (line undefined, column undefined)
    at runLoaders (/home/admin/build/node_modules/[email protected]@webpack/lib/NormalModule.js:313:20)
    at /home/admin/build/node_modules/[email protected]@loader-runner/lib/LoaderRunner.js:367:11
    at /home/admin/build/node_modules/[email protected]@loader-runner/lib/LoaderRunner.js:233:18
    at context.callback (/home/admin/build/node_modules/[email protected]@loader-runner/lib/LoaderRunner.js:111:13)

Tout va bien lors de la rétrogradation vers la v3.9.0 , veuillez enquêter sur ce problème et espérer le résoudre dès que possible.

Commentaire le plus utile

J'ai le même problème, vous devez changer votre 'package.json' => "less": "~3.9.0", limit version

Tous les 64 commentaires

J'ai le même problème, vous devez changer votre 'package.json' => "less": "~3.9.0", limit version

+1

+1

+1 !
Urgent~

+1

même problème

+1 version moins 3.9.0 moins-loader 4.1.0

Vous pouvez supprimer le ^ de la version less dans package.json et réinstaller la v3.9.0. Cela devrait résoudre le problème. Vous pouvez l'essayer. Bien que la version soit verrouillée, à cause de ^, la dernière version de 3 sera téléchargée. Le la dernière version devrait poser problème. .

+1

+1

const shortname = new this.less.FileManager().extractUrlParts(filename).filename;

Causé par ce code similaire?

omg, j'ai limité la version à 3.9.0, ça marche.

Pareil ici. npm récupère automatiquement cette version "mineure" et casse toutes mes versions. :(

+1

v3.10.0 même erreur

+1

dépêche toi

+1

utilisez simplement [email protected] tout ira bien

@lixiaohulee à moins que vous n'utilisiez pas less-loader et que tout ne se passe pas bien

+1

+1

J'ai le même problème (((

+1

J'ai le même problème :/

Il s'agit d'un problème avec une ancienne version de less-loader , pas Less, qui n'a pas hérité correctement du gestionnaire de fichiers Less. less-loader 5.0 le fait. Voir : https://github.com/less/less.js/issues/3414#issuecomment -522223041

Résoudre?

Résoudre?

Vous pouvez prendre le moins de dépendances dans votre package.js et réinstaller les dernières dépendances de la version mineure.
image

+1

Ooooooooooops !!! Pourquoi ne pas résoudre le problème car de nombreux projets ont verrouillé la version less-loader avec 4.1.0 .

Nous utilisons antd qui est tombé en panne : https://github.com/ant-design/ant-design/issues/18343

Comment pouvons-nous résoudre le problème ?

@montanaflynn conserver un environnement plus ancien et générer une carte de dépendances verrouillées avec npm-shrinkmap.json peut être un bon choix.

@ aleen42 merci, j'espère que cela pourra être corrigé bientôt, je ne suis pas très familier avec tous les trucs npm.

@montanaflynn Je me suis rencontré plusieurs fois lorsque nous avons rompu pendant la construction en raison des dépendances déverrouillées, y compris des sous-dépendances. Il s'agit d'un problème déroutant de NPM pour la plupart des développeurs FE.

@ aleen42 nous l'avons corrigé en ajoutant

  "devDependencies": {
    "less-loader": "^5.0.0"
  }

Pourquoi ce problème se pose-t-il ?
La version de Node.js n'est pas correcte ?

Ce n'est pas un problème de version de nœud.

@montanaflynn , vous pouvez également résoudre le problème en spécifiant temporairement une sous-version pour less-loader :

devDepedencies: {
    "less-loader": "4.1.0",
    "less": "3.9.0"
}

Mettez à niveau avec
yarn upgrade less@^3.10.1 less-loader@^5.0.0

utiliser "less": "~3.9.0"

+1

+1

Incidemment, pour ceux qui regardent ce fil, je vais rouvrir et probablement soumettre un correctif plus tard dans la journée pour les anciennes versions less-loader , juste pour que les choses soient moins ennuyeuses.

C'est l'un de ces cas extrêmes où l'utilisation de la syntaxe Class pour remplacer une fonction prototype génère une erreur sans new . Un FileManager est censé être toujours appelé avec new (c'est l'API documentée), et les anciennes versions de less-loader ne l'ont apparemment pas fait.

_Encore une fois, cependant, si vous regardez le fil, la simple mise à jour vers less-loader 5.0 corrige cette incompatibilité._

Je pense qu'il est préférable pour less-loader de rétrograder ses dépendances en dessous 3.9.0 .

@ aleen42 Pourquoi cela serait-il nécessaire, alors que la dernière version de less-loader fonctionne correctement ?

Supposons que certains projets n'aient pas besoin de prendre en compte le risque d'une mise à niveau de haut niveau de 4.x à 5.x .

+666

Quelqu'un peut-il essayer : https://github.com/less/less.js/pull/3421 ?

La branche est à: https://github.com/matthew-dean/less.js/tree/release/v3.10.2

Le défi de tester ceci est que les propres tests less-loader échouent sur 3.9.0, donc ce qui est attendu n'est pas clair. Mais, avec les classes exportées de Less transpilées en fonctions, les mêmes erreurs sont au moins déclenchées dans less-loader , il n'est donc pas clair si c'est la sortie attendue ou non. Il n'est pas non plus clair _comment_ ou pourquoi cette erreur se produit dans Less loader v4, et ne se produit pas dans la v5, sauf qu'il peut s'agir d'un problème de Webpack sur la v4 ?

Dans tous les cas, si les gens peuvent confirmer que cette branche en tant que dépendance Less ne cause pas le problème de classe, alors je la fusionnerai.

+1 version moins 3.9.0 moins-loader 4.1.0

+1

+1

Spécifiez manuellement moins de version :
npm je [email protected] -D
d'accord!!!

Correction par rétrogradation vers 3.9.0

Juste avant, je supprime les node_modules et tape npm i , cette erreur se produit. Donc, la dernière version 3.10.1 a toujours ce bogue. Je choisis de rétrograder vers 3.9.0

Comment puis-je corriger ce bogue si j'utilise @zeit/next-less ? Toute aide appréciée.

@ezgitek

npm i @zeit/next-less
npm i [email protected]

https://forum.vuejs.org/t/vue-cli/72008/7
"moins": "^3.10.1",
"less-loader": "^5.0.0",
est en cours d'exécution

Fusionné : https://github.com/less/less.js/pull/3421

Personne avec des problèmes de less-loader v4 ne semblait vouloir tester [3.10.2] 🤷‍♂, mais lors de mes tests, les tests v4 de Less-loader ont cassé différemment avec 3.10.1 (problème de constructeur de classe), et ont cassé la même chose avec ce PR . Donc... je ne sais pas si ça résout le problème, mais ça ne devrait pas être pire ?

J'ai fusionné ce correctif possible dans master (mais pas encore publié sur NPM). J'aimerais toujours que quelqu'un confirme avant de publier au lieu des +1.

Je peux confirmer que je viens d'essayer la branche principale actuelle de less localement avec less-loader ^ 4.1.0, et mon projet est capable de se reconstruire. 👍

Merci pour votre travail là-dessus !

@jenniferneale Merci d'avoir confirmé ! Je publierai sur NPM plus tard dans la journée, je ne peux pas le faire depuis le travail.

+1

Ce problème est-il résolu avec la version 3.10.3 ?

@H4ngman devrait l'être. Ré-ouvrir sinon.

Cette page vous a été utile?
0 / 5 - 0 notes