Less.js: O construtor de classe FileManager não pode ser invocado sem 'novo'.

Criado em 17 ago. 2019  ·  64Comentários  ·  Fonte: less/less.js

Parece que a v3.10.0 quebra minha compilação, os logs do webpack abaixo:

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)

Tudo está ok quando o downgrade para a v3.9.0 , investigue esse problema e espere corrigi-lo o mais rápido possível.

Comentários muito úteis

Eu tenho o mesmo problema, você deve alterar seu 'package.json' => "less": "~3.9.0", limit version

Todos 64 comentários

Eu tenho o mesmo problema, você deve alterar seu 'package.json' => "less": "~3.9.0", limit version

+1

+1

+1!
Urgente~

+1

mesmo problema

+1 versão menos 3.9.0 menos carregador 4.1.0

Você pode remover o ^ da versão less no package.json e reinstalar a v3.9.0. Isso deve resolver o problema. Você pode tentar. Embora a versão esteja bloqueada, por causa do ^, a versão mais recente do 3 será baixada. O última versão deve ser problemática.

+1

+1

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

Causado por este código semelhante?

omg, eu limitei a versão para 3.9.0, funciona.

Mesmo aqui. O npm pega essa versão "menor" automaticamente e quebra todas as minhas compilações. :(

+1

v3.10.0 mesmo erro

+1

pressa

+1

basta usar [email protected] tudo ficará bem

@lixiaohulee , a menos que você não esteja usando menos carregador e tudo não ficará bem

+1

+1

Eu tenho o mesmo problema (((

+1

Eu tenho o mesmo problema :/

Este é um problema com uma versão mais antiga de less-loader , não Less, que não herdou o gerenciador de arquivos Less corretamente. less-loader 5,0 faz. Consulte: https://github.com/less/less.js/issues/3414#issuecomment -522223041

Resolver isso?

Resolver isso?

Você pode pegar menos dependências em seu package.js e reinstalar as dependências de versão secundária mais recentes.
image

+1

Oooooops!!! Por que não corrigir o problema, pois muitos projetos bloquearam a versão less-loader com 4.1.0 .

Estamos usando o antd que quebrou: https://github.com/ant-design/ant-design/issues/18343

Como podemos corrigir o problema?

@montanaflynn manter um ambiente mais antigo e gerar mapa de dependências bloqueadas com npm-shrinkmap.json pode ser uma boa escolha.

@aleen42 obrigado, espero que isso possa ser corrigido em breve, não estou muito familiarizado com todas as coisas do npm.

@montanaflynn Eu me encontrei muitas vezes quando quebramos durante a construção devido às dependências desbloqueadas, incluindo subdependências. Este é um problema confuso do NPM para a maioria dos desenvolvedores de FE.

@aleen42 corrigimos adicionando

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

Por que esse problema surge?
A versão do Node.js não está certa?

Não é um problema de versão do nó.

@montanaflynn você também pode corrigir o problema especificando uma subversão para less-loader temporariamente:

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

Atualize com
yarn upgrade less@^3.10.1 less-loader@^5.0.0

usar "less": "~3.9.0"

+1

+1

Aliás, para aqueles que estão assistindo a este tópico, vou reabrir e provavelmente enviar uma correção ainda hoje para versões less-loader mais antigas, apenas para que as coisas sejam menos irritantes.

É um daqueles casos extremos em que realmente usar a sintaxe Class para substituir uma função de protótipo gera um erro sem new . Um FileManager deve sempre ser invocado com new (essa é a API documentada), e versões mais antigas de less-loader aparentemente não.

_No entanto, se você estiver olhando para o tópico, apenas atualizar para less-loader 5.0 corrige essa incompatibilidade._

Eu acho que é melhor para less-loader fazer o downgrade de suas dependências abaixo 3.9.0 .

@aleen42 Por que isso seria necessário, quando a versão mais recente de less-loader funciona bem?

Suponha que alguns projetos podem não precisar cuidar do risco de atualização de alto nível de 4.x para 5.x .

+666

Alguém pode tentar: https://github.com/less/less.js/pull/3421?

A filial está em: https://github.com/matthew-dean/less.js/tree/release/v3.10.2

O desafio em testar isso é que os próprios testes de less-loader falham no 3.9.0, então não está claro o que é esperado. Mas, com as classes exportadas de Less transpiladas para funções, os mesmos erros pelo menos são acionados em less-loader , então não está claro se essa é a saída esperada ou não. Também não está claro _como_ ou por que esse erro ocorre no Less loader v4 e não ocorre na v5, exceto que pode ser um problema do Webpack na v4?

De qualquer forma, se as pessoas puderem confirmar que essa ramificação como uma dependência Less não causa o problema de classe, eu a mesclarei.

+1 versão menos 3.9.0 menos carregador 4.1.0

+1

+1

Especifique manualmente menos versão:
npm i [email protected] -D
OK!!!

Correção por downgrade para 3.9.0

Pouco antes, eu apago o node_modules e digito npm i , esse erro acontece. Portanto, a versão mais recente 3.10.1 ainda tem esse bug. Eu escolho fazer o downgrade para 3.9.0

Como eu corrigiria esse bug se estiver usando @zeit/next-less? Qualquer ajuda apreciada.

@ezgitek

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

https://forum.vuejs.org/t/vue-cli/72008/7
"menos": "^3.10.1",
"less-loader": "^5.0.0",
está correndo

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

Ninguém com problemas de menos carregador v4 parecia disposto a testar [3.10.2] 🤷‍♂, mas nos meus testes, os testes de menos carregador v4 quebraram de forma diferente com 3.10.1 (problema do construtor de classe) e quebraram o mesmo com este PR . Então ..... não tenho certeza se isso resolve, mas não deve ser pior?

Mesclei essa possível correção no master (mas ainda não liberei para o NPM). Ainda adoraria que alguém confirmasse antes de liberar em vez dos +1s.

Posso confirmar que tentei o branch master atual de less localmente com less-loader ^4.1.0, e meu projeto pode ser compilado novamente. 👍

Obrigado por seu trabalho sobre isso!

@jenniferneale Obrigado por confirmar! Vou publicar no NPM ainda hoje então, não consigo fazer isso no trabalho.

+1

Este problema foi corrigido com 3.10.3?

@H4ngman Deve ser. Reabra se não.

Esta página foi útil?
0 / 5 - 0 avaliações