Less.js: Class constructor FileManager cannot be invoked without 'new'.

Created on 17 Aug 2019  ·  64Comments  ·  Source: less/less.js

It seems that v3.10.0 breaks my build, webpack logs below:

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)

Everything is ok when downgrade to v3.9.0, please investigate this issue and hope to fix it as soon as possible.

Most helpful comment

I have the same problem,you mast change you 'package.json' => "less": "~3.9.0", limit version

All 64 comments

I have the same problem,you mast change you 'package.json' => "less": "~3.9.0", limit version

+1

+1

+1!
急 ~

+1

same problem

+1 version less 3.9.0 less-loader 4.1.0

可以把package.json中 less版本的 ^ 去掉 重新安装一下 v3.9.0 应该就可以解决问题 大家可以试一下
虽然 锁定了版本 但是由于 ^, 所以会下载3 一下的最新版本, 最新版本应该是有问题的。

+1

+1

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

这个类似代码引起的?

omg, i limited the version to 3.9.0,works.

Same here. npm picks up this "minor" release automatically, and breaks all of my builds. :(

+1

v3.10.0 same error

+1

hurry

+1

just use [email protected] every thing will be ok

@lixiaohulee unless you're not using less-loader and everything will not be ok

+1

+1

I have the same problem (((

+1

i have the same problem :/

This is an issue with an older version of less-loader, not Less, which did not inherit the Less filemanager correctly. less-loader 5.0 does. See: https://github.com/less/less.js/issues/3414#issuecomment-522223041

解决了吗?

解决了吗?

你可以,把你package.js 里的less依赖,重新安装最近小版本依赖。
image

+1

Oooooooooooops!!! Why not fix the problem as many projects has locked less-loader version with 4.1.0.

We're using antd which broke: https://github.com/ant-design/ant-design/issues/18343

How can we fix the issue?

@montanaflynn keep a older envrionment and generate locked dependencies map with npm-shrinkmap.json may be a good choice.

@aleen42 thanks, I hope this can be fixed soon, I'm not very familiar with all the npm stuff.

@montanaflynn I have met many times when we broke during building due to the unlocked dependencies, including sub dependencies. This is a confusing problems of NPM for most FE developers.

@aleen42 we fixed it by adding

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

Why does this problem arise?
Node.js version is not right?

It's not a node version issue.

@montanaflynn you can also fix the problem by specifying a sub version for less-loader temporarily:

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

Upgrade with
yarn upgrade less@^3.10.1 less-loader@^5.0.0

use "less": "~3.9.0"

+1

+1

Incidentally, for those watching this thread, I'll re-open and probably submit a fix later today for older less-loader versions, just to have things be less annoying.

It's one of those edge cases where actually using the Class syntax to replace a prototype function throws an error without new. A FileManager is supposed to always be invoked with new (that's the documented API), and older versions of less-loader apparently did not.

_Again, though, if you're looking at the thread, just updating to less-loader 5.0 fixes this incompatibility._

I think that it is better for less-loader to downgrade its dependencies below 3.9.0.

@aleen42 Why would that be necessary, when the latest version of less-loader works fine?

Assume that some projects may not need to take care the risk of high level upgrading from 4.x to 5.x.

+666

Can someone try: https://github.com/less/less.js/pull/3421?

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

The challenge in testing this is that less-loader's own tests fail on 3.9.0, so it's not clear what's expected. But, with Less's exported classes transpiled down to functions, the same errors at least get triggered in less-loader, so it's not clear if that's expected output or not. It's also not clear _how_ or why this error occurs in Less loader v4, and doesn't occur in v5, except it may be a Webpack issue on v4?

In any case, if people can confirm that this branch as a Less dependency doesn't cause the class issue, then I'll merge it in.

+1 version less 3.9.0 less-loader 4.1.0

+1

+1

Manually specify less version :
npm i [email protected] -D
ok!!!

Fix by downgrade to 3.9.0

Just before, I delete the node_modules and type npm i, this error happen. So the latest version 3.10.1 still has this bug. I choose downgrade to 3.9.0

How would I fix this bug if I am using @zeit/next-less? Any help appreciated.

@ezgitek

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

https://forum.vuejs.org/t/vue-cli/72008/7
"less": "^3.10.1",
"less-loader": "^5.0.0",
is running

Merged: https://github.com/less/less.js/pull/3421

No one with less-loader v4 issues seemed willing to test [3.10.2] 🤷‍♂, but in my testing, Less-loader's v4 tests broke differently with 3.10.1 (class constructor issue), and broke the same with this PR. So..... not sure if it fixes it, but it should be no worse?

I merged that possible fix into master (but not yet released to NPM). Still would love for someone to confirm before releasing instead of the +1's.

I can confirm I just tried the current master branch of less locally with less-loader ^4.1.0, and my project is able to build again. 👍

Thanks for your work on this!

@jenniferneale Thanks for confirming! I'll publish to NPM later today then, can't do it from work.

+1

Is this issue fixed with 3.10.3?

@H4ngman Should be. Re-open if not.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

papandreou picture papandreou  ·  7Comments

seven-phases-max picture seven-phases-max  ·  6Comments

awebdev picture awebdev  ·  4Comments

briandipalma picture briandipalma  ·  6Comments

matthew-dean picture matthew-dean  ·  6Comments