Я пытаюсь использовать Typescript для своей AWS Lambda, и я получаю следующие ошибки, когда бы я ни использовал обещания.
Ошибка TS2693: «Обещание» относится только к типу, но здесь используется в качестве значения.
Я попытался использовать следующие варианты в коде
Использование конструктора Promise
responsePromise = new Promise((resolve, reject) => {
return reject(new Error(`missing is needed data`))
})
используя Promise.reject
responsePromise = Promise.reject(new Error(`Unsupported method "${request.httpMethod}"`));
Версии
Ниже приведены версии в моих зависимостях dev:
"typescript": "^2.2.2"
"@types/aws-lambda": "0.0.9",
"@types/core-js": "^0.9.40",
"@types/node": "^7.0.12",
Содержимое tsconfig.json
{
"compileOnSave": true,
"compilerOptions": {
"module": "commonjs",
// "typeRoots" : ["./typings", "./node_modules/@types"],
"target": "es5",
// "types" : [ "core-js" ],
"noImplicitAny": true,
"strictNullChecks": true,
"allowJs": true,
"noEmit": true,
"alwaysStrict": true,
"preserveConstEnums": true,
"sourceMap": true,
"outDir": "dist",
"moduleResolution": "Node",
"declaration": true,
"lib": [
"es6"
]
},
"include": [
"index.ts",
"lib/**/*.ts"
],
"exclude": [
"node_modules",
"**/*.spec.ts"
]
}
Я использую grunt-ts со следующей конфигурацией для запуска задачи ts.
ts: {
app: {
tsconfig: {
tsconfig: "./tsconfig.json",
ignoreSettings: true
}
},
...
Я попытался использовать решение, упомянутое в разделе « Я получаю»: [ts] «Обещание» относится только к типу, но используется здесь как значение, но не повезло.
javascript
typescript
promise
kalyanvgopal
источник
источник
return
.responsePromise = new Promise((resolve, reject) => { reject(new Error("missing is needed data"))})
Я попробовал это. Но это не помогло с проблемой.responsePromise
заявлено?Ответы:
У меня была такая же проблема с,
aws-sdk
и я решил ее с помощью"target": "es2015"
. Это мойtsconfig.json
файл.источник
@types/aws-lambda
, устарели. Amazon поставляет типы Typescript с официальным SDK . Нет необходимости определенно набирать.Обнаружил сегодня ту же ошибку и решил:
Обновить:
Добавить:
источник
import {Promise} from 'es6-promise'
;import { Promise } from '../node_modules/es6-promise/es6-promise';
Однако, похоже, работает нормально. Почему TS не может найти установленные наборы?Я решил это, добавив приведенный ниже код в файл tsconfig.json.
источник
Решается путем изменения цели в compilerOptions.
источник
Вот мой совет. Протестировано с vscode 1.21.1 (на MAC)
Поместите ниже конфиг в tsconfig.json
в compilerOptions
Перезапустите IDE (требуется это действие: D)
источник
У меня была эта ошибка, но я решил ее с помощью этой команды, мое имя файла ts - promises-fs.ts:
и ошибка ушла
источник
Добавьте строку ниже в файл, где выдается ошибка. Это должно решить проблему
PS: это определенно не оптимальное решение
источник
TS
если вы собираетесь сделать что-то вроде этого. Я имею в виду какой смысл тогда ?!Наконец TSC начал работать без каких-либо ошибок. Но несколько изменений. Благодаря Сандро Кейлу , Pointy & Unional
tsconfig.json
Gruntfile.js
источник
Была такая же проблема с машинописью и
aws-sdk
. Решением было изменить цель наes6
.Мой полный
tsconfig.json
файл:источник
У меня была та же проблема, пока я не добавил следующий массив lib в typeScript 3.0.1
tsconfig.json
источник
Ну, это может быть нелогичным, но я решил это добавить
esnext
к своемуlib
.ИСПРАВЛЕНИЕ, как предлагает компилятор, заключается в
источник
Core-js не работал для меня, так как вызывал другие проблемы, однако, просто установив последнюю версию,
npm i @types/es6-promise --save-dev
избавился от проблем. Проблемы для меня возникли из-за компиляции SDK, который использовал rxjs. Вот ошибка, которую я получил:источник
Если вы используете репозиторий DefiniteTyped в своем проекте, вы можете столкнуться с этой недавней проблемой .
Достойный обходной путь, который вы можете использовать (кроме ожидания обновленной сборки файла определений или рефакторинга кода TS), - это указать явную версию + сборку для типизаций core-js, а не позволять Visual Studio выбирать самую последнюю / последнюю версию , Я обнаружил, что эта проблема, похоже, не затронута этой проблемой (по крайней мере, в моем случае), вы можете использовать ее, заменив следующую строку в файле package.jso n:
Со следующим:
Это исправило мою проблему навсегда. Тем не менее, настоятельно рекомендуется удалить явную версию + ссылку на сборку, как только проблема будет выпущена.
Для получения дополнительной информации по этой проблеме, вы также можете прочитать этот пост в блоге, который я написал по этой теме.
источник
У меня была та же самая проблема, и это спасло меня от проблемы в секунду:
напишите в консоли это:
в файле, где проблема копировать вставить это:
источник
Просто измените цель на «ES2017» в файле tsconfig.json.
это мой файл tsconfig.json
источник
npm я --save-dev @ types / es6-обещание
после команды up лучше проверить tsconfig.json и убедиться, что «target» должен быть больше, чем «es6». возможно tsc пока не поддерживает es5.
источник
Ни один из полученных здесь ответов не работает для меня. Здесь гарантированное и разумное решение. Поместите это в верхней части любого файла кода, который использует Promise ...
источник
Потратив много времени, пытаясь это исправить. Мне не повезло с каким-либо решением, предоставленным здесь или в другом месте.
Но потом понял, что это было не просто решение проблемы. Но вам также нужно перезапустить VSCODE, чтобы он вступил в силу.
источник
У меня была та же ошибка, и я исправил ее с помощью этой конфигурации:
Файл: tsconfig.json
источник
Помните, что если вы запускаете команду tsc с именем файла, т.е.
тогда файл конфигурации компилятора tsconfig.json игнорируется. Решение состоит в том, чтобы запустить любую команду tsc самостоятельно, и в этом случае все файлы .ts в каталоге будут скомпилированы, если вы не отредактировали tsconfig.json, чтобы включить набор файлов.
см. «Использование свойства файлов» ... https://www.typescriptlang.org/docs/handbook/tsconfig-json.html
источник
Та же ошибка здесь. Я исправил это, используя «module»: «ES6» в tsconfig.
источник
Я избавился от этой же ошибки
index.ts
с этими комбинированными свойствами:В tsconfig.json:
И в package.json:
источник