Definitelytyped: erreur TS2304 : Impossible de trouver le nom 'Set'. 815 allowNodeEnvironmentFlags : défini<string>;</string>

Créé le 25 sept. 2018  ·  20Commentaires  ·  Source: 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)

Que dois-je faire?

Commentaire le plus utile

Pareil ici avec target et lib comme es6 .
J'ai réussi à résoudre ce problème en installant @types/[email protected] .

Tous les 20 commentaires

Ajoutez "lib": ["es6"] ou plus.

J'ai le même problème, mais ajouter l'option lib sur le fichier tsconfig ne l'a pas résolu.

Version dactylographiée : 3.1.1
Version de typage des nœuds : 10.11.5

Étapes à reproduire

$ 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>;

J'ai parlé à de nombreuses personnes à ce sujet, si lib ne résout pas le problème, à un moment donné, votre tsconfig n'est pas chargé correctement, veuillez vous assurer que la bibliothèque est correctement chargée avec le fichier en utilisant le include Option files dans tsconfig.json .

@andy-ms dois-je annuler le changement Set ?
Alors que les gens devraient vraiment utiliser la bibliothèque >es6 pour une utilisation avec le nœud, cela _pourrait_ être considéré comme un changement radical.

Je pense que vous pourriez définir interface Set<T> {} en dessous interface SetConstructor {} dans node/index.d.ts pour que cela fonctionne avec --lib es5 .

même problème.

☁  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 Je peux vous dire que vous n'avez pas installé le dernier @types/node (actuellement 10.12.0), car il y a allowedNodeEnvironmentFlags: ReadonlySet<string>; et interface ReadonlySet<T> {} est déclaré dans @types/node/index.d.ts .

@andy-ms Merci. Après npm rm @types/node -D , ce problème a disparu.

J'ai le même problème et je le résous en utilisant compilerOptions.types sur mon tsconfig.json . Donc, fondamentalement, je n'ai répertorié que le package @types nécessaire dans cette propriété.

@rannie-peralta ce problème a longtemps été résolu dans le type en faisant une déclaration vide ReadonlySet .

Moi aussi j'ai rencontré le même genre de problème.
package.json
{
"nom": "carte",
"version": "1.0.0",
"la description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Erreur : aucun test spécifié\" && exit 1"
},
"mots clés": [],
"auteur": "",
"licence": "ISC",
"dépendances": {
"typescript": "^3.4.5"
}
}
tsconfig.json
{
"optionscompilateur": {
"module": "amd",
"noImplicitAny": vrai,
"esModuleInterop": vrai,
"sourceMap": vrai,
"jsx": "réagir",
"jsxFactory": "tsx",
"cible": "es6",
"décorateurs expérimentaux": vrai,
"preserveConstEnums": vrai,
"suppressImplicitAnyIndexErrors": vrai,
"lib": ["es2015", "es2016"]
},
"inclure": [
"./src/*"
],
"exclure": [
"node_modules"
]
}
index.js
fonction displayData(){
var maCarte = nouvelle Carte();
maCarte.set("nom","xxxxxxxx");
}
commande pour convertir en fichier js

tsc .src\index.ts
Erreur :
Option du compilateur src/index.ts:4:21 - error TS2583: Cannot find name 'Map'. Do you need to change your target library? Try changing the lib` vers es2015 ou version ultérieure.

4 var maCarte = nouvelle Carte();
~~~

1 erreur trouvée.`

@ Praveer1981 la solution est littéralement dans le message d'erreur.

Je suis tombé sur ce même problème et j'étais confus car mon tsconfig.json a exactement ce que le message d'erreur dit de faire. Modifier davantage mon tsconfig.json ne résoudrait pas le problème.

Lorsque vous passez un chemin de fichier à tsc , je pense que le tsconfig.json est ignoré. C'est ce qui m'arrivait.

tsc src/foo.ts # entraîne des erreurs de compilation indiquant de mettre à jour ma bibliothèque/cible
tsc # fonctionne bien car mon tsconfig.json spécifiait une cible de es2015 ou version ultérieure

Donc, si vous obtenez ceci et que votre tsconfig.json semble bon, vérifiez si vous transmettez un chemin personnalisé au compilateur et ignorez potentiellement votre configuration.

Pareil ici

node_modules/@types/react/index.d.ts:377:23 - erreur TS2583 : Impossible de trouver le nom 'Set'. Avez-vous besoin de changer votre bibliothèque cible ? Essayez de remplacer l'option de compilation lib par es2015 ou une version ultérieure.

interactions: Set<SchedulerInteraction>,

Configuration :

{
  "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"
  ]
}

Fichier que j'analyse qui lance :

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

let g = new Greeter('hello');

export { Greeter };

Pareil ici avec target et lib comme es6 .
J'ai réussi à résoudre ce problème en installant @types/[email protected] .

@brunobertoldi
Oui, je peux confirmer. Votre réponse résout le problème.
Ici https://github.com/DefinitelyTyped/DefinitelyTyped/issues/29172#issuecomment -527708175

@brunobertoldi , je voudrais ajouter à cela que j'ai dû ouvrir une invite avec des privilèges d'administrateur pour installer ces saisies, mais une fois que je l'ai fait, cela a fonctionné !

Merci, au fait.

Merci pour les détails supplémentaires, @thomasio101 !

Pareil ici avec target et lib comme es6 .
J'ai réussi à résoudre ce problème en installant @types/[email protected] .

excellent frais!

Je suggérerais de suivre le fonctionnement create-react-app

À l'intérieur du compilateurOptions

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

Le contenu de lib dépend entièrement de vous.

Pareil ici avec target et lib comme es6 .
J'ai réussi à résoudre ce problème en installant @types/[email protected] .

Résout le problème

Cette page vous a été utile?
0 / 5 - 0 notes