Definitelytyped: erro TS2304: Não é possível localizar o nome 'Set'. 815 allowedNodeEnvironmentFlags: Definir<string>;</string>

Criado em 25 set. 2018  ·  20Comentários  ·  Fonte: DefinitelyTyped/DefinitelyTyped

D:\workshop\www
λ node -v
v8.12.0

D:\workshop\www
λ npm -v
6.4.1

D:\workshop\www
λ npm install typescript -g
C:\Users\dell\AppData\Roaming\npm\tsc -> C:\Users\dell\AppData\Roaming\npm\node_modules\typescript\bin\tsc
C:\Users\dell\AppData\Roaming\npm\tsserver -> C:\Users\dell\AppData\Roaming\npm\node_modules\typescript\bin\tsserver
+ [email protected]
updated 1 package in 3.061s

D:\workshop\www
λ tsc --version
Version 3.0.3

D:\workshop\www
λ mkdir typescript_learning

D:\workshop\www
λ cd typescript_learning

D:\workshop\www\typescript_learning
λ npm init -y
Wrote to D:\workshop\www\typescript_learning\package.json:

{
  "name": "typescript_learning",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}



D:\workshop\www\typescript_learning  ([email protected])
λ tsc --init
message TS6071: Successfully created a tsconfig.json file.

D:\workshop\www\typescript_learning  ([email protected])
λ npm install @types/node --dev-save
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN [email protected] No description
npm WARN [email protected] No repository field.

+ @types/[email protected]
added 1 package from 30 contributors in 1.657s

D:\workshop\www\typescript_learning  ([email protected])
λ touch helloworld.ts

D:\workshop\www\typescript_learning  ([email protected])
λ tsc helloworld.ts
node_modules/@types/node/index.d.ts:815:38 - error TS2304: Cannot find name 'Set'.

815         allowedNodeEnvironmentFlags: Set<string>;

helloworld.ts

var a:string = "HelloWorld"
console.log(a)

O que devo fazer?

Comentários muito úteis

O mesmo aqui com target e lib como es6 .
Eu consegui consertar isso instalando @types/[email protected] .

Todos 20 comentários

Adicione "lib": ["es6"] ou superior.

Estou com o mesmo problema, mas adicionar a opção lib no arquivo tsconfig não resolveu.

Versão datilografada: 3.1.1
Versão de tipagens de nós: 10.11.5

Passos para reproduzir

$ mkdir test
$ cd test
$ npm init -y
$ npm install --save-dev typescript @types/node
$ echo 'console.log("test")' > index.ts
$ ./node_modules/.bin/tsc --init

Add lib: "es2015" to tsconfig.json

$ ./node_modules/.bin/tsc index.ts

node_modules/@types/node/index.d.ts:815:38 - error TS2583: Cannot find name 'Set'. Do you need to change your target library? Try changing the `lib` compiler option to es2015 or later.

815         allowedNodeEnvironmentFlags: Set<string>;

Conversei com várias pessoas sobre isso, se lib não corrigir, em algum momento seu tsconfig não está sendo carregado corretamente, por favor, certifique-se de que a lib esteja sendo carregada corretamente junto com o arquivo usando o include ou files opção no tsconfig.json .

@andy-ms devo reverter a mudança Set ?
Enquanto as pessoas realmente deveriam estar usando o >es6 lib para uso com o nó, isso _poderia_ ser visto como uma mudança importante.

Acho que você poderia definir interface Set<T> {} abaixo interface SetConstructor {} em node/index.d.ts para que funcione com --lib es5 .

mesmo problema.

☁  jest-codelab [master] ⚡  $(npm bin)/tsc ./src/@types/index.ts
node_modules/@types/node/index.d.ts:815:38 - error TS2583: Cannot find name 'Set'. Do you need to change your target library? Try changing the `lib` compiler option to es2015 or later.

815         allowedNodeEnvironmentFlags: Set<string>;
                                         ~~~

tsconfig.json :

"lib": ["es2015", "es2016"]

package.json :

"devDependencies": {
    "@types/jest": "^23.3.3",
    "@types/node": "^10.11.4",
    "jest": "^23.6.0",
    "ts-jest": "^23.10.4",
    "tslint": "^5.11.0",
    "typescript": "^3.1.1"
  }

@mrdulin Posso dizer que você não tem o mais recente @types/node instalado (atualmente 10.12.0), porque lá está allowedNodeEnvironmentFlags: ReadonlySet<string>; e interface ReadonlySet<T> {} está declarado em @types/node/index.d.ts .

@andy-ms Obrigado. Depois de npm rm @types/node -D , esse problema desapareceu.

Eu tenho o mesmo problema e resolvo usando compilerOptions.types no meu tsconfig.json . Então, basicamente, eu listei apenas o pacote @types necessário nessa propriedade.

@rannie-peralta esse problema foi corrigido há muito tempo fazendo uma declaração ReadonlySet vazia.

Eu também encontrei o mesmo tipo de problema.
pacote.json
{
"nome": "mapa",
"versão": "1.0.0",
"Descrição": "",
"main": "index.js",
"roteiros": {
"test": "echo \"Erro: nenhum teste especificado\" && exit 1"
},
"palavras-chave": [],
"autor": "",
"licença": "ISC",
"dependências": {
"datilografado": "^3.4.5"
}
}
tsconfig.json
{
"compilerOptions": {
"módulo": "amd",
"noImplicitAny": verdadeiro,
"esModuleInterop": verdadeiro,
"sourceMap": verdadeiro,
"jsx": "reagir",
"jsxFactory": "tsx",
"alvo": "es6",
"experimentalDecorators": true,
"preserveConstEnums": true,
"suppressImplicitAnyIndexErrors": true,
"lib": ["es2015", "es2016"]
},
"incluir": [
"./src/*"
],
"excluir": [
"node_modules"
]
}
index.js
função displayData(){
var meuMapa = new Mapa();
meuMapa.set("nome","xxxxxxxx");
}
comando para converter em arquivo js

tsc .src\index.ts
Erro:
src/index.ts:4:21 - error TS2583: Cannot find name 'Map'. Do you need to change your target library? Try changing the opção do compilador lib` para es2015 ou posterior.

4 var meuMapa = new Mapa();
~~~

1 erro encontrado.`

@ Praveer1981 a solução está literalmente na mensagem de erro.

Me deparei com esse mesmo problema e fiquei confuso porque meu tsconfig.json tem exatamente o que a mensagem de erro diz para fazer. Modificar ainda mais meu tsconfig.json não resolveria o problema.

Quando você passa um caminho de arquivo para tsc , acredito que o tsconfig.json seja ignorado. Isto é o que estava acontecendo comigo.

tsc src/foo.ts # resulta em erros do compilador informando para atualizar minha lib/target
tsc # funciona bem porque meu tsconfig.json estava especificando um destino de es2015 ou posterior

Então, se você está recebendo isso e seu tsconfig.json parece bom, verifique novamente se você está passando um caminho personalizado para o compilador e potencialmente ignorando sua configuração.

Mesmo aqui

node_modules/@types/react/index.d.ts:377:23 - erro TS2583: Não é possível encontrar o nome 'Set'. Você precisa alterar sua biblioteca de destino? Tente alterar a opção do compilador lib para es2015 ou posterior.

interactions: Set<SchedulerInteraction>,

Configuração:

{
  "compilerOptions": {
    "target": "es5",
    "target: "es5", // <= doesn't help
    "lib": [
      "dom",
      "dom.iterable",
      "esnext",
      "es2015", // <= doesn't help
      "es6", // <= doesn't help
    ],
    "allowJs": true,
    "skipLibCheck": true,
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "strict": true,
    "forceConsistentCasingInFileNames": true,
    "module": "esnext",
    "moduleResolution": "node",
    "resolveJsonModule": true,
    "isolatedModules": true,
    "noEmit": true,
    "sourceMap": true,
    "baseUrl": "./",
    "jsx": "preserve"
  },
  "include": [
    "./**/*",
    "*.tsx"
  ],
  "exclude": [
    "node_modules",
    "**/*.spec.ts"
  ]
}

Arquivo que analiso que lança:

class Greeter {
  public greeting: string;
  constructor(msg: string) {
    this.greeting = msg;
  }
}

let g = new Greeter('hello');

export { Greeter };

O mesmo aqui com target e lib como es6 .
Eu consegui consertar isso instalando @types/[email protected] .

@brunobertoldi
Sim, posso confirmar. Sua resposta corrige o problema.
Aqui https://github.com/DefinitelyTyped/DefinitelyTyped/issues/29172#issuecomment -527708175

@brunobertoldi , gostaria de acrescentar a isso que tive que abrir um prompt com privilégios de administrador para instalar essas digitações, mas depois que fiz, funcionou!

Obrigado, aliás.

Obrigado pelos detalhes adicionais, @thomasio101!

O mesmo aqui com target e lib como es6 .
Eu consegui consertar isso instalando @types/[email protected] .

excelente legal!

Sugiro seguir a maneira create-react-app funciona

Dentro do compiladorOptions

    ...
    "skipLibCheck": true,
    "lib": [
      "dom",
      "dom.iterable",
      "esnext"
    ],
   ...

O conteúdo da lib depende totalmente de você.

O mesmo aqui com target e lib como es6 .
Eu consegui consertar isso instalando @types/[email protected] .

Resolve o problema

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

Questões relacionadas

JWT
svipas picture svipas  ·  3Comentários

jbreckmckye picture jbreckmckye  ·  3Comentários

ArtemZag picture ArtemZag  ·  3Comentários

fasatrix picture fasatrix  ·  3Comentários

variousauthors picture variousauthors  ·  3Comentários