Definitelytyped: ошибка TS2304: не удается найти имя «Набор». 815 разрешеноNodeEnvironmentFlags: установлено<string>;</string>

Созданный на 25 сент. 2018  ·  20Комментарии  ·  Источник: 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>;

привет мир.тс

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

Что я должен делать?

Самый полезный комментарий

То же самое здесь с target и lib как es6 .
Мне удалось исправить это, установив @types/[email protected] .

Все 20 Комментарий

Добавьте "lib": ["es6"] или выше.

У меня та же проблема, но добавление опции lib tsconfig не решило ее.

Версия машинописного текста: 3.1.1
Версия типов узлов: 10.11.5

Действия по воспроизведению

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

Я говорил об этом со многими людьми, если lib не исправляет это, значит, в какой-то момент ваш tsconfig загружается неправильно, убедитесь, что библиотека правильно загружается вместе с файлом, используя include Параметр files в tsconfig.json .

@andy-ms, должен ли я отменить изменение Set ?
Хотя людям действительно следует использовать библиотеку >es6 для использования с узлом, это _можно_ рассматривать как критическое изменение.

Я думаю, вы могли бы определить interface Set<T> {} ниже interface SetConstructor {} в node/index.d.ts , чтобы он работал с --lib es5 .

такая же проблема.

☁  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 Я могу сказать, что у вас не установлена ​​​​последняя версия @types/node (в настоящее время 10.12.0), потому что там allowedNodeEnvironmentFlags: ReadonlySet<string>; , а interface ReadonlySet<T> {} объявлено в @types/node/index.d.ts .

@ andy-ms Спасибо. После npm rm @types/node -D эта проблема исчезла.

У меня такая же проблема, и я решаю ее, используя compilerOptions.types на моем tsconfig.json . Так что в основном я перечислил только необходимый пакет @types в этом свойстве.

@rannie-peralta эта проблема уже давно исправлена ​​в типе путем создания пустого объявления ReadonlySet .

Я тоже столкнулся с такой же проблемой.
пакет.json
{
"имя": "карта",
"версия": "1.0.0",
"описание": "",
«основной»: «index.js»,
"скрипты": {
"test": "echo \"Ошибка: тест не указан\" && выход 1"
},
"ключевые слова": [],
"автор": "",
"лицензия": "ISC",
"зависимости": {
"машинопись": "^3.4.5"
}
}
tsconfig.json
{
"Параметры компилятора": {
"модуль": "амд",
"noImplicitAny": правда,
"esModuleInterop": правда,
"исходная карта": правда,
"jsx": "реагировать",
"jsxFactory": "tsx",
"цель": "es6",
"experimentalDecorators": правда,
"preserveConstEnums": правда,
"suppressImplicitAnyIndexErrors": правда,
"lib": ["es2015", "es2016"]
},
"включать": [
"./источник/*"
],
"исключать": [
"узловые_модули"
]
}
index.js
функция отображения данных () {
var myMap = новая карта();
myMap.set("имя","хххххххх");
}
команда для преобразования в файл js

tsc .src\index.ts
Ошибка :
Опция компилятора src/index.ts:4:21 - error TS2583: Cannot find name 'Map'. Do you need to change your target library? Try changing the lib` для es2015 или более поздней версии.

4 var myMap = новая карта();
~~~

Найдена 1 ошибка.`

@ Praveer1981 решение буквально в сообщении об ошибке.

Я столкнулся с этой же проблемой и был сбит с толку, потому что мой tsconfig.json имеет именно то, что говорит сообщение об ошибке. Дальнейшее изменение моего tsconfig.json не решит проблему.

Когда вы передаете путь к файлу tsc , я считаю, что tsconfig.json игнорируется. Это то, что происходило со мной.

tsc src/foo.ts # приводит к ошибкам компилятора с указанием обновить мою библиотеку/цель
tsc # работает нормально, потому что мой tsconfig.json указывал цель es2015 или новее

Поэтому, если вы получаете это, и ваш tsconfig.json выглядит хорошо, дважды проверьте, передаете ли вы пользовательский путь компилятору и, возможно, игнорируете свою конфигурацию.

То же самое

node_modules/@types/react/index.d.ts:377:23 — ошибка TS2583: не удается найти имя «Set». Вам нужно изменить целевую библиотеку? Попробуйте изменить параметр компилятора lib на es2015 или более позднюю версию.

interactions: Set<SchedulerInteraction>,

Конфигурация:

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

Файл, который я разбираю, выдает:

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

let g = new Greeter('hello');

export { Greeter };

То же самое здесь с target и lib как es6 .
Мне удалось исправить это, установив @types/[email protected] .

@брунобертолди
Да, я могу подтвердить. Ваш ответ исправляет проблему.
Здесь https://github.com/DefinitelyTyped/DefinitelyTyped/issues/29172#issuecomment -527708175

@brunobertoldi , я хотел бы добавить к этому, что мне пришлось открыть приглашение с правами администратора, чтобы установить эти типы, но как только я это сделал, это сработало!

Спасибо, кстати.

Спасибо за дополнительные подробности, @thomasio101!

То же самое здесь с target и lib как es6 .
Мне удалось исправить это, установив @types/[email protected] .

отлично круто!

Я бы посоветовал следовать тому, как работает create-react-app

Внутри параметров компилятора

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

Контент в lib полностью зависит от вас.

То же самое здесь с target и lib как es6 .
Мне удалось исправить это, установив @types/[email protected] .

Решает проблему

Была ли эта страница полезной?
0 / 5 - 0 рейтинги