Rollup-plugin-typescript2: Esta sintaxe requer um auxiliar importado, mas o módulo 'tslib' não pode ser encontrado.

Criado em 18 abr. 2017  ·  19Comentários  ·  Fonte: ezolenko/rollup-plugin-typescript2

Vejo que o código tem algumas referências a tslib e importHelpers então presumo que isso funcione de forma transparente. Caso contrário, ficarei feliz em saber o que está faltando.

Aqui está como reproduzir:

Pacotes instalados:

$ npm ls --depth=0
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
└── [email protected]

tsconfig.json :

{
    "compilerOptions": {
        "target": "es5"
    }
}

rollup.config.js :

import typescript from 'rollup-plugin-typescript2';

export default {
    entry: './main.ts',

    plugins: [
        typescript()
    ]
}

main.ts :

import {Foo} from './module';

console.log("HERE" + Foo);

E module.ts :

export class Foo {}

export class Bar extends Foo {}

Ao executar o rollup da seguinte forma:

./node_modules/.bin/rollup -c rollup.config.js

Eu recebo este erro:

🚨   rpt2: module.ts (3,18): semantic error TS2354 This syntax requires an imported helper but module 'tslib' cannot be found.
module.ts

Acho que isso ocorre porque a sintaxe extends requer um auxiliar __extends de tslib , mas o texto digitado não consegue encontrar tslib .

O resultado esperado é que os ajudantes necessários se tornem parte do pacote.

Obrigado.

Comentários muito úteis

@hueitan eu enfrentei o mesmo problema enquanto já tinha "moduleResolution": "node" . Corrigido ao adicionar "tslib": "^1.10.0" às minhas devDependencies.

Todos 19 comentários

Definitivamente, isso deve funcionar de forma transparente (e funciona para mim em meus próprios projetos). Vou tentar sua configuração exata, obrigado.

Parece que você precisa de "moduleResolution": "node" em tsconfig, caso contrário, o typescript não pode encontrar tslib em node_modules.

Não tenho certeza se isso pode causar problemas em configurações sem nós, mas ainda não ouvi nada sobre isso.

De fato, com "moduleResolution": "node" , funciona como esperado. Lendo https://www.typescriptlang.org/docs/handbook/module-resolution.html , acho que "node" é a melhor opção para mim, então vou apenas usá-lo. Posso sugerir mencioná-lo / recomendá-lo no README?

Vejo que você abriu # 14 para o caso "classic" , então fecharei isso. Obrigado!

Não tenho certeza se alguém está enfrentando o mesmo problema que o meu.

Eu estava tendo esse problema https://github.com/rollup/rollup-plugin-typescript/issues/109 , portanto, mudo para este repo, mas estou recebendo este erro tslib .

pois o tsconfig já é "moduleResolution": "node"

Se você postar seu tsconfig, rollup config e package.json, alguém pode detectar algo errado.

@hueitan eu enfrentei o mesmo problema enquanto já tinha "moduleResolution": "node" . Corrigido ao adicionar "tslib": "^1.10.0" às minhas devDependencies.

adicionando tslib já que as dependências funcionam para mim também. embora não seja a solução bonita

tslib já é uma dependência de rollup-plugin-typescript2 , como isso acaba faltando em seu sistema?

Você usa npm install ou outra coisa?

no meu caso estou usando fio. Excluindo o yarn.lock e reinstalando novamente, não preciso de uma menção explícita de tslib no package.json

Posso reproduzi-lo no seguinte repo:

https://github.com/giniedp/tweak-ui

git clone [email protected]:giniedp/tweak-ui.git
cd tweak-ui
git checkout v0.1.0

agora edite package.json e remova tslib . Então faça

yarn install
yarn run build

você deveria correr para

This syntax requires an imported helper named '__spreadArrays', but module 'tslib' has no exported member '__spreadArrays'

agora exclua o yarn.lock e então

yarn install
yarn run build

funciona bem.

Isso foi corrigido com este

@hueitan eu enfrentei o mesmo problema enquanto já tinha "moduleResolution": "node" . Corrigido ao adicionar "tslib": "^1.10.0" às minhas devDependencies.

Fixo! O meu estava em dependências regulares.

Corrigido adicionando "tslib": "^ 1.10.0" às minhas dependências.

npm i tslib -D

funcionou para mim também

Como @ezolenko diz: Embora npm i tslib -D funcione, isso _não_ deve ser usado como a solução, porque:

tslib já é uma dependência de rollup-plugin-typescript2 , como isso acaba faltando em seu sistema?

Você usa npm install ou outra coisa?

O que funcionou no meu caso e é a melhor solução é deletar package-lock e node_modules e reinstalar.

rm -rf ./node_modules
rm -rf ./package-lock.json
npm i

@hueitan eu enfrentei o mesmo problema enquanto já tinha "moduleResolution": "node" . Corrigido ao adicionar "tslib": "^1.10.0" às minhas devDependencies.

Obrigado, é tão útil

Nenhuma das soluções propostas funcionou para mim. Atualizar rollup-plugin-typescript2 resolveu o problema.

npm i [email protected]

Acontece que o rollup estava usando [email protected] mesmo quando eu tinha ^1.10.0 em devDependencies . Percebi que rollup-plugin-typescript2 estava substituindo a versão tslib. Eu estava usando v0.20.1 ; atualizado para v0.27.1 .

Comportamento estranho, mas reiniciar o código do VS funcionou para mim. Eu não tinha esse problema anteriormente, ele só apareceu depois de fazer a instalação de um pacote.

Corrigido adicionando "tslib": "^ 1.10.0" às minhas dependências.

Obrigado. Acabei de adicionar peerDependencies e funciona bem para mim, não é necessário instalar

Eu tive este erro:

erro semântico TS2343: esta sintaxe requer um importante
ajudante ted denominado '__spreadArray' que não existe em 'tslib'. Considere atualizar sua versão do 'tslib'.

Corrigido adicionando "tslib": "^ 2.1.0" às minhas dependências.

Você pode simplesmente atualizar nossa versão tslib . Eu fiz o meu de [email protected] para tslib@^2.2.0 que é o mais recente na época e corrigiu meu problema "__spreadArray" .

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

Questões relacionadas

alshdavid picture alshdavid  ·  16Comentários

HelloDennis picture HelloDennis  ·  3Comentários

eddow picture eddow  ·  14Comentários

kyle-johnson picture kyle-johnson  ·  10Comentários

PavaniVaka picture PavaniVaka  ·  12Comentários