Less.js: Der Klassenkonstruktor FileManager kann nicht ohne „new“ aufgerufen werden.

Erstellt am 17. Aug. 2019  ·  64Kommentare  ·  Quelle: less/less.js

Es scheint, dass v3.10.0 meinen Build kaputt macht, Webpack-Protokolle unten:

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)

Beim Downgrade auf v3.9.0 ist alles in Ordnung. Bitte untersuchen Sie dieses Problem und hoffen Sie, es so schnell wie möglich zu beheben.

Hilfreichster Kommentar

Ich habe das gleiche Problem, Sie müssen Ihre 'package.json' => "less": "~3.9.0", Limit-Version ändern

Alle 64 Kommentare

Ich habe das gleiche Problem, Sie müssen Ihre 'package.json' => "less": "~3.9.0", Limit-Version ändern

+1

+1

+1!
Dringend~

+1

gleiches Problem

+1 Version weniger 3.9.0 weniger Loader 4.1.0

Sie können das ^ der Less-Version in package.json entfernen und v3.9.0 neu installieren. Es sollte das Problem lösen. Sie können es versuchen. Obwohl die Version wegen ^ gesperrt ist, wird die neueste Version von 3 heruntergeladen. Die Die neueste Version sollte problematisch sein. .

+1

+1

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

Verursacht durch diesen ähnlichen Code?

omg, ich habe die Version auf 3.9.0 beschränkt, funktioniert.

Hier gilt das gleiche. npm nimmt diese „kleinere“ Version automatisch auf und unterbricht alle meine Builds. :(

+1

v3.10.0 gleicher Fehler

+1

Eile

+1

Verwenden Sie einfach [email protected] , alles wird in Ordnung sein

@lixiaohulee , es sei denn, Sie verwenden keinen Less-Loader und alles wird nicht in Ordnung sein

+1

+1

Ich habe das gleiche Problem (((

+1

Ich habe das gleiche Problem :/

Dies ist ein Problem mit einer älteren Version von less-loader , nicht Less, die den Less-Dateimanager nicht korrekt geerbt hat. less-loader 5.0 tut es. Siehe: https://github.com/less/less.js/issues/3414#issuecomment -522223041

Löse es?

Löse es?

Sie können die weniger Abhängigkeiten in Ihrer package.js nehmen und die neuesten Nebenversionsabhängigkeiten neu installieren.
image

+1

Ooooooooooops!!! Warum nicht das Problem beheben, da viele Projekte die Version less-loader mit 4.1.0 gesperrt haben.

Wir verwenden antd, das kaputt gegangen ist: https://github.com/ant-design/ant-design/issues/18343

Wie können wir das Problem beheben?

@montanaflynn Behalten Sie eine ältere Umgebung bei und generieren Sie eine gesperrte Abhängigkeitskarte mit npm-shrinkmap.json kann eine gute Wahl sein.

@aleen42 danke, ich hoffe, das kann bald behoben werden, ich bin mit dem ganzen npm-Zeug nicht sehr vertraut.

@montanaflynn Ich habe mich oft getroffen, als wir während des Baus aufgrund der entsperrten Abhängigkeiten, einschließlich Unterabhängigkeiten, zusammenbrachen. Dies ist ein verwirrendes Problem von NPM für die meisten FE-Entwickler.

@aleen42 wir haben es durch Hinzufügen behoben

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

Warum tritt dieses Problem auf?
Die Node.js-Version ist nicht richtig?

Es ist kein Problem mit der Knotenversion.

@montanaflynn Sie können das Problem auch beheben, indem Sie vorübergehend eine Unterversion für less-loader angeben:

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

Aktualisieren Sie mit
yarn upgrade less@^3.10.1 less-loader@^5.0.0

Verwenden "less": "~3.9.0"

+1

+1

Übrigens, für diejenigen, die diesen Thread beobachten, werde ich ihn später noch einmal öffnen und wahrscheinlich einen Fix für ältere less-loader -Versionen einreichen, nur damit die Dinge weniger nervig sind.

Dies ist einer dieser Grenzfälle, bei denen die tatsächliche Verwendung der Class -Syntax zum Ersetzen einer Prototypfunktion einen Fehler ohne new . Ein FileManager sollte immer mit new aufgerufen werden (das ist die dokumentierte API), und ältere Versionen von less-loader taten dies offensichtlich nicht.

_Wiederum, wenn Sie sich den Thread ansehen, wird diese Inkompatibilität einfach durch ein Update auf less-loader 5.0 behoben._

Ich denke, dass es für less-loader besser ist, seine Abhängigkeiten auf unter 3.9.0 herunterzustufen.

@aleen42 Warum sollte das notwendig sein, wenn die neueste Version von less-loader gut funktioniert?

Gehen Sie davon aus, dass einige Projekte das Risiko eines High-Level-Upgrades von 4.x auf 5.x möglicherweise nicht berücksichtigen müssen.

+666

Kann jemand versuchen: https://github.com/less/less.js/pull/3421?

Branch ist unter: https://github.com/matthew-dean/less.js/tree/release/v3.10.2

Die Herausforderung beim Testen besteht darin, dass die eigenen Tests less-loader auf 3.9.0 fehlschlagen, sodass nicht klar ist, was erwartet wird. Aber da die exportierten Klassen von Less in Funktionen transpiliert wurden, werden die gleichen Fehler zumindest in less-loader ausgelöst, sodass nicht klar ist, ob dies die erwartete Ausgabe ist oder nicht. Es ist auch nicht klar, _wie_ oder warum dieser Fehler in Less Loader v4 auftritt und nicht in v5, außer dass es sich möglicherweise um ein Webpack-Problem in v4 handelt?

Wenn die Leute bestätigen können, dass dieser Zweig als Less-Abhängigkeit das Klassenproblem nicht verursacht, werde ich ihn auf jeden Fall zusammenführen.

+1 Version weniger 3.9.0 weniger Loader 4.1.0

+1

+1

Weniger Version manuell angeben:
npm ich [email protected] -D
OK!!!

Behebung durch Downgrade auf 3.9.0

Kurz bevor ich die node_modules lösche und npm i eingebe, tritt dieser Fehler auf. Die neueste Version 3.10.1 hat also immer noch diesen Fehler. Ich wähle Downgrade auf 3.9.0

Wie würde ich diesen Fehler beheben, wenn ich @zeit/next-less verwende? Jede Hilfe geschätzt.

@ezgitek

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

https://forum.vuejs.org/t/vue-cli/72008/7
"weniger": "^3.10.1",
"less-loader": "^5.0.0",
läuft

Zusammengeführt: https://github.com/less/less.js/pull/3421

Niemand mit Less-Loader-v4-Problemen schien bereit zu sein, [3.10.2] 🤷‍♂ zu testen, aber in meinen Tests brachen die Less-Loader-v4-Tests mit 3.10.1 (Klassenkonstruktor-Problem) anders zusammen und brachen mit diesem PR genauso zusammen . Also ... nicht sicher, ob es das Problem behebt, aber es sollte nicht schlimmer sein?

Ich habe diesen möglichen Fix in Master zusammengeführt (aber noch nicht für NPM freigegeben). Ich würde es immer noch lieben, wenn jemand dies bestätigt, bevor er die +1 freigibt.

Ich kann bestätigen, dass ich gerade den aktuellen Master-Zweig von less local mit less-loader ^4.1.0 ausprobiert habe, und mein Projekt kann erneut erstellt werden. 👍

Danke für deine Arbeit dazu!

@jennifereale Danke für die Bestätigung! Ich werde dann später in NPM veröffentlichen, kann es nicht von der Arbeit aus tun.

+1

Ist dieses Problem mit 3.10.3 behoben?

@ H4ngman Sollte sein. Wenn nicht, wieder öffnen.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen