Definitelytyped: Fehler TS2304: Der Name „Set“ kann nicht gefunden werden. 815 AllowedNodeEnvironmentFlags: Gesetzt<string>;</string>

Erstellt am 25. Sept. 2018  ·  20Kommentare  ·  Quelle: 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>;

hallowelt.ts

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

Was soll ich machen?

Hilfreichster Kommentar

Das gleiche hier mit target und lib als es6 .
Ich habe es geschafft, dies zu beheben, indem ich @types/[email protected] installiert habe.

Alle 20 Kommentare

Fügen Sie "lib": ["es6"] oder höher hinzu.

Ich habe das gleiche Problem, aber das Hinzufügen der Option lib in der Datei tsconfig hat es nicht gelöst.

Schreibmaschinenversion: 3.1.1
Version der Knotentypisierung: 10.11.5

Schritte zum Reproduzieren

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

Ich habe mit zahlreichen Leuten darüber gesprochen, wenn lib es nicht behebt, dann wird irgendwann Ihre tsconfig nicht richtig geladen, bitte stellen Sie sicher, dass die lib zusammen mit der Datei korrekt geladen wird, indem Sie das include Option files in tsconfig.json .

@andy-ms soll ich die Set Änderung rückgängig machen?
Während die Leute wirklich die >es6 lib zur Verwendung mit node verwenden sollten, _könnte_ dies als Breaking Change angesehen werden.

Ich denke, Sie könnten interface Set<T> {} unter interface SetConstructor {} in node/index.d.ts definieren, damit es mit --lib es5 funktioniert.

gleicher Fehler.

☁  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 Ich kann sagen, dass Sie nicht das neueste @types/node installiert haben (derzeit 10.12.0), weil es dort allowedNodeEnvironmentFlags: ReadonlySet<string>; ist und interface ReadonlySet<T> {} in @types/node/index.d.ts deklariert ist

@andy-ms Danke. Nach npm rm @types/node -D ist dieses Problem verschwunden.

Ich habe das gleiche Problem und ich löse es mit compilerOptions.types auf meinem tsconfig.json . Also habe ich im Grunde nur das benötigte @types -Paket in dieser Eigenschaft aufgeführt.

@rannie-peralta Dieses Problem wurde seit langem behoben, indem eine leere ReadonlySet -Deklaration durchgeführt wurde.

Ich bin auch auf die gleiche Art von Problem gestoßen.
Paket.json
{
"Name": "Karte",
"Version": "1.0.0",
"Bezeichnung": "",
"main": "index.js",
"Skripte": {
"test": "echo \"Fehler: kein Test angegeben\" && Ausgang 1"
},
"Schlüsselwörter": [],
"Autor": "",
"Lizenz": "ISC",
"Abhängigkeiten": {
"typoskript": "^3.4.5"
}
}
tsconfig.json
{
"compilerOptions": {
"modul": "amd",
"noImplicitAny": wahr,
"esModuleInterop": wahr,
"sourceMap": wahr,
"jsx": "reagieren",
"jsxFactory": "tsx",
"Ziel": "es6",
"experimentalDecorators": wahr,
"preserveConstEnums": wahr,
"suppressImplicitAnyIndexErrors": wahr,
"lib": ["es2015", "es2016"]
},
"enthalten": [
"./src/*"
],
"ausschließen": [
"node_modules"
]
}
index.js
Funktion displayData(){
var meineKarte = neue Karte();
myMap.set("name","xxxxxxxx");
}
Befehl zum Konvertieren in eine js-Datei

tsc.src\index.ts
Fehler :
src/index.ts:4:21 - error TS2583: Cannot find name 'Map'. Do you need to change your target library? Try changing the lib`-Compileroption auf es2015 oder höher.

4 var meineKarte = neue Karte();
~~~

1 Fehler gefunden.`

@ Praveer1981 die Lösung steht buchstäblich in der Fehlermeldung.

Ich bin auf dasselbe Problem gestoßen und war verwirrt, weil meine tsconfig.json genau das hat, was die Fehlermeldung sagt. Eine weitere Änderung meiner tsconfig.json würde das Problem nicht beheben.

Wenn Sie einen Dateipfad an tsc übergeben, wird tsconfig.json meines Erachtens ignoriert. Dies ist, was mit mir passiert ist.

tsc src/foo.ts # führt zu Compiler-Fehlern, die angeben, dass ich meine Bibliothek/mein Ziel aktualisieren soll
tsc # funktioniert gut, weil meine tsconfig.json ein Ziel von es2015 oder höher spezifiziert hat

Wenn Sie dies also erhalten und Ihre tsconfig.json gut aussieht, überprüfen Sie noch einmal, ob Sie einen benutzerdefinierten Pfad an den Compiler übergeben und möglicherweise Ihre Konfiguration ignorieren.

Hier gilt das gleiche

node_modules/@types/react/index.d.ts:377:23 – Fehler TS2583: Kann den Namen „Set“ nicht finden. Müssen Sie Ihre Zielbibliothek ändern? Versuchen Sie, die Compileroption lib auf es2015 oder höher zu ändern.

interactions: Set<SchedulerInteraction>,

Konfig:

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

Datei, die ich parse, die auslöst:

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

let g = new Greeter('hello');

export { Greeter };

Das gleiche hier mit target und lib als es6 .
Ich habe es geschafft, dies zu beheben, indem ich @types/[email protected] installiert habe.

@brunobertoldi
Ja, kann ich bestätigen. Ihre Antwort behebt das Problem.
Hier https://github.com/DefinitelyTyped/DefinitelyTyped/issues/29172#issuecomment -527708175

@brunobertoldi , ich möchte hinzufügen, dass ich eine Eingabeaufforderung mit Administratorrechten öffnen musste, um diese Eingaben zu installieren, aber sobald ich das getan habe, hat es funktioniert!

Danke dir übrigens.

Danke für die zusätzlichen Details, @thomasio101!

Das gleiche hier mit target und lib als es6 .
Ich habe es geschafft, dies zu beheben, indem ich @types/[email protected] installiert habe.

ausgezeichnet cool!

Ich würde vorschlagen, der Funktionsweise create-react-app zu folgen

In den CompilerOptions

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

Der Inhalt in lib liegt ganz bei Ihnen.

Das gleiche hier mit target und lib als es6 .
Ich habe es geschafft, dies zu beheben, indem ich @types/[email protected] installiert habe.

Löst das Problem

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen