Less.js: 没有“new”就不能调用类构造函数 FileManager。

创建于 2019-08-17  ·  64评论  ·  资料来源: less/less.js

似乎v3.10.0破坏了我的构建,webpack 日志如下:

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)

降级到v3.9.0后一切正常,请调查此问题并希望尽快解决。

最有用的评论

我有同样的问题,你mast改变你'package.json' => "less": "~3.9.0", 限制版本

所有64条评论

我有同样的问题,你mast改变你'package.json' => "less": "~3.9.0", 限制版本

+1

+1

+1!
急 ~

+1

同样的问题

+1 版本少 3.9.0 少加载器 4.1.0

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

+1

+1

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

这个类似代码引起的?

omg,我将版本限制为3.9.0,可以。

同样在这里。 npm 会自动获取这个“次要”版本,并破坏我所有的构建。 :(

+1

v3.10.0 同样的错误

+1

匆忙

+1

只需使用[email protected]一切都会好的

@lixiaohulee除非您不使用 less-loader 并且一切都不会好

+1

+1

我也有同样的问题 (((

+1

我也有同样的问题 :/

这是旧版本less-loader的问题,而不是 Less,它没有正确继承 Less 文件管理器。 less-loader 5.0 可以。 见: https ://github.com/less/less.js/issues/3414#issuecomment -522223041

解决了吗?

解决了吗?

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

+1

呜呜呜!!! 为什么不解决这个问题,因为许多项目已经用4.1.0锁定less-loader版本。

我们正在使用破坏的 antd: https ://github.com/ant-design/ant-design/issues/18343

我们如何解决这个问题?

@montanaflynn保留较旧的环境并使用npm-shrinkmap.json生成锁定的依赖关系图可能是一个不错的选择。

@aleen42谢谢,我希望这可以很快解决,我对所有 npm 的东西都不是很熟悉。

@montanaflynn我在构建过程中遇到过很多次由于未锁定的依赖项(包括子依赖项)而中断的情况。 对于大多数 FE 开发人员来说,这是一个令人困惑的 NPM 问题。

@aleen42我们通过添加来修复它

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

为什么会出现这个问题?
Node.js 版本不对?

这不是节点版本问题。

@montanaflynn ,您还可以通过临时指定less-loader的子版本来解决问题:

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

升级
yarn upgrade less@^3.10.1 less-loader@^5.0.0

使用"less": "~3.9.0"

+1

+1

顺便说一句,对于那些观看此线程的人,我将在今天晚些时候重新打开并可能会为较旧的less-loader版本提交修复,只是为了让事情不那么烦人。

这是实际使用Class语法替换原型函数的边缘情况之一,在没有new的情况下会引发错误。 FileManager 应该始终使用new (这是记录在案的 API)调用,而旧版本的less-loader显然没有。

_再一次,不过,如果您正在查看线程,只需更新到less-loader 5.0 即可修复此不兼容性。_

我认为less-loader最好将其依赖项降级到3.9.0以下。

@aleen42当最新版本的less-loader工作正常时,为什么有必要这样做?

假设某些项目可能不需要考虑从4.x5.x的高级升级风险。

+666

有人可以试试: https://github.com/less/less.js/pull/3421?

分支位于: https ://github.com/matthew-dean/less.js/tree/release/v3.10.2

测试这个的挑战是less-loader自己的测试在 3.9.0 上失败了,所以不清楚预期是什么。 但是,随着 Less 的导出类被转换为函数,同样的错误至少会在less-loader中触发,所以不清楚这是否是预期的输出。 也不清楚_how_或为什么这个错误发生在Less loader v4中,而在v5中没有发生,除非它可能是v4上的Webpack问题?

无论如何,如果人们可以确认此分支作为 Less 依赖项不会导致类问题,那么我会将其合并。

+1 版本少 3.9.0 少加载器 4.1.0

+1

+1

手动指定less版本:
npm i [email protected] -D
好的!!!

通过降级到 3.9.0 进行修复

就在之前,我删除了 node_modules 并输入npm i ,发生了这个错误。 所以最新版本的3.10.1还是有这个bug。 我选择降级到 3.9.0

如果我使用@zeit/next-less,我将如何修复这个错误? 任何帮助表示赞赏。

@ezgitek

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

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

合并: https ://github.com/less/less.js/pull/3421

没有 less-loader v4 问题的人似乎愿意测试 [3.10.2] 🤷‍♂,但在我的测试中,Less-loader 的 v4 测试与 3.10.1(类构造函数问题)不同,并且与此 PR 相同. 所以.....不确定它是否可以修复它,但它应该不会更糟吗?

我将该可能的修复合并到 master 中(但尚未发布到 NPM)。 仍然希望有人在发布之前确认而不是 +1。

我可以确认我刚刚使用 less-loader ^4.1.0 在本地尝试了 less 的当前 master 分支,并且我的项目能够再次构建。 👍

感谢您在这方面所做的工作!

@jenniferneale感谢您的确认! 我将在今天晚些时候发布到 NPM,不能下班。

+1

3.10.3 解决了这个问题吗?

@H4ngman应该是。 如果没有,请重新打开。

此页面是否有帮助?
0 / 5 - 0 等级