Estou tentando usar o Typecript para o meu AWS Lambda e estou recebendo os seguintes erros sempre que uso promessas.
erro TS2693: 'Promessa' refere-se apenas a um tipo, mas está sendo usado como um valor aqui.
Eu tentei usar as seguintes variações no código
Usando o construtor Promise
responsePromise = new Promise((resolve, reject) => {
return reject(new Error(`missing is needed data`))
})
usando Promise.reject
responsePromise = Promise.reject(new Error(`Unsupported method "${request.httpMethod}"`));
Versões
A seguir estão as versões em minhas dependências de desenvolvimento:
"typescript": "^2.2.2"
"@types/aws-lambda": "0.0.9",
"@types/core-js": "^0.9.40",
"@types/node": "^7.0.12",
Conteúdo de 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"
]
}
Estou usando o grunt-ts com a seguinte configuração para executar a tarefa ts.
ts: {
app: {
tsconfig: {
tsconfig: "./tsconfig.json",
ignoreSettings: true
}
},
...
Eu tentei com a solução mencionada em Eu recebo: [ts] 'Promise' refere-se apenas a um tipo, mas está sendo usado como um valor aqui, mas sem sorte.
javascript
typescript
promise
kalyanvgopal
fonte
fonte
return
.responsePromise = new Promise((resolve, reject) => { reject(new Error("missing is needed data"))})
Eu tentei. Mas isso não ocorreu com o problema.responsePromise
declarado?Respostas:
Eu tive o mesmo problema com o
aws-sdk
e resolvi usando"target": "es2015"
. Este é o meutsconfig.json
arquivo.fonte
@types/aws-lambda
estejam desatualizados. A Amazon envia tipos tipográficos com o SDK oficial . Não há necessidade de DefinitelyTyped.Encontre o mesmo erro hoje e resolva-o com:
Atualizar:
adicionar:
fonte
import {Promise} from 'es6-promise'
;import { Promise } from '../node_modules/es6-promise/es6-promise';
, no entanto, parece estar funcionando bem. Por que o TS não conseguiu encontrar as tipagens instaladas?Resolvi isso adicionando o código abaixo ao arquivo tsconfig.json.
fonte
Resolvido alterando o destino em compilerOptions.
fonte
Aqui está a minha dica. Testado com vscode 1.21.1 (no MAC)
Coloque abaixo da configuração em tsconfig.json
em compilerOptions
Reinicie o IDE (esta ação é necessária: D)
fonte
Eu tive esse erro, mas o resolvi usando este comando, meu nome de arquivo ts é promises-fs.ts:
e o erro se foi
fonte
Adicione abaixo da linha ao arquivo em que o erro está sendo gerado. Isso deve corrigir o problema
PS: Esta definitivamente não é a solução ideal
fonte
TS
se você estiver fazendo algo assim? Quero dizer, qual é o sentido então ?!Finalmente, o tsc começou a trabalhar sem erros. Mas várias mudanças. Graças a Sandro Keil , Pointy e unional
tsconfig.json
Gruntfile.js
fonte
Tinha o mesmo problema com o texto datilografado e o
aws-sdk
. A solução era mudar o alvo paraes6
.Meu
tsconfig.json
arquivo completo :fonte
Eu tive o mesmo problema até adicionar a seguinte matriz lib no typeScript 3.0.1
tsconfig.json
fonte
Bem, isso pode ser contra-intuitivo, mas resolvi isso adicionando
esnext
ao meulib
.O FIX, conforme sugerido pelo compilador, é
fonte
Core-js não funcionou para mim, pois causou outros problemas, no entanto, basta instalar a versão mais recente e
npm i @types/es6-promise --save-dev
se livrar dos problemas. Os problemas para mim surgiram da compilação de um sdk que estava usando o rxjs. Aqui está o erro que eu estava recebendo:fonte
Se você estiver usando o repositório DefinitelyTyped em seu projeto, poderá estar enfrentando esse problema recente .
Uma solução decente que você pode usar (além de aguardar uma compilação atualizada do arquivo de definições ou refatorar o código TS) é especificar uma versão explícita + compilação para as tipificações core-js em vez de permitir que o Visual Studio escolha a mais recente / mais recente . Eu encontrei um que parece não ser afetado por esse problema (pelo menos no meu caso), você pode usá-lo substituindo a seguinte linha do arquivo package.jso n:
Com o seguinte:
Isso corrigiu meu problema definitivamente. No entanto, é altamente recomendável remover a versão explícita + a referência de compilação assim que o problema for lançado.
Para mais informações sobre esse problema, você também pode ler esta postagem de blog que escrevi sobre o assunto.
fonte
Eu tive o mesmo problema e isso me salvou do problema em segundo:
escreva no console isso:
no arquivo em que o problema está copiado, cole este:
fonte
Apenas mude o destino para "ES2017" no arquivo tsconfig.json.
este é o meu arquivo tsconfig.json
fonte
npm i --save-dev @ types / es6-promessa
Após o comando up, é melhor verificar o tsconfig.json para garantir que o "target" seja maior que o "es6". talvez o tsc não suporte es5 ainda.
fonte
Nenhuma das respostas votadas aqui funciona para mim. Aqui está uma solução garantida e razoável. Coloque isso próximo ao topo de qualquer arquivo de código que use o Promise ...
fonte
Tendo passado muito tempo tentando consertar isso. Não tive sorte com nenhuma solução fornecida aqui ou em outro lugar.
Mas depois percebi que não era apenas resolver o problema. Mas você também precisa reiniciar o VSCODE para que ele tenha efeito.
fonte
Eu tive o mesmo erro e o corrigi com esta configuração:
Arquivo: tsconfig.json
fonte
Esteja ciente de que se você estiver executando o comando tsc com um nome de arquivo, por exemplo:
o arquivo de configuração do compilador tsconfig.json é ignorado. A solução é executar o comando tsc por conta própria; nesse caso, todos os arquivos .ts no diretório serão compilados, a menos que você tenha editado o tsconfig.json para incluir um conjunto de arquivos.
consulte 'usando a propriedade de arquivos' ... https://www.typescriptlang.org/docs/handbook/tsconfig-json.html
fonte
O mesmo erro aqui. Corrigi isso usando "module": "ES6" no tsconfig.
fonte
Eu me livrei desse mesmo erro em
index.ts
com essas propriedades combinadas:No tsconfig.json:
E no package.json:
fonte