私は、非同期/待機といくつかのネイティブな約束事を使用し、関数のデフォルト値を使用するnodeJS-Express-Typescriptプロジェクトを持っています。 IDEは、このエラーについて私に警告しasync/await、Promise、およびfunctionのデフォルトパラメータを持つTypescript
sleep(ms: number) {
return new Promise(resolve => setTimeout(resolve, 500));
}
async someFunction(param = "default") {
doStuff(param);
await sleep(500);
doSomeMoreStuff();
}
:
$ tsc -p .
error TS2468: Cannot find global value 'Promise'.
spec/routes/users.spec.ts(508,23): error TS2705: An async function or method in ES5/ES3 requires the 'Promise' constructor. Make sure you have a declaration for the 'Promise' constructor or include 'ES2015' in your `--lib` option.
src/utils/sleep.ts(10,20): error TS2693: 'Promise' only refers to a type, but is being used as a value here.
ので、私は私のtsconfig.json
にターゲットとしてes2015を追加する必要があります。
"target": "es2015"
これは私が達成できるかの簡単な例だろう
しかし、このエラーは、移動したJSを実行するときに発生します。
/../users-api/dist/src/repository/realm-helper.js:21
static init(development = false) {
^
SyntaxError: Unexpected token =
at exports.runInThisContext (vm.js:53:16)
at Module._compile (module.js:373:25)
at Object.Module._extensions..js (module.js:416:10)
at Module.load (module.js:343:32)
at Function.Module._load (module.js:300:12)
at Module.require (module.js:353:17)
at require (internal/module.js:12:17)
at Object.<anonymous> (/../users-api/dist/src/routes/users.js:4:24)
at Module._compile (module.js:409:26)
at Object.Module._extensions..js (module.js:416:10)
だから私は「ES5」にターゲットを変更する必要があること:
"target": "es5"
悪循環につながります。
"target"と "module"の値を変更しようとしましたが、常に失敗します。
ここに何か不足していますか?理論的には、typescript 2.2は両方の機能をサポートしているので、私はなぜトランスカリルできないのか分かりません。
tsconfig.json
{
"compilerOptions": {
"outDir": "./dist/",
"rootDir": ".",
"sourceMap": true,
"module": "commonjs",
"target": "es5"
},
"include": [
"./src/**/*",
"./spec/**/*"
]
}
typescriptです 2.4.1
ノード 4.4.7
こんにちは、お返事ありがとうございます。これらを追加すると、このエラーが発生します。 'エラーTS2488:タイプには、各行にfor-ofループがある 'イテレータを返す' [Symbol.iterator]() 'メソッドが必要です。 – josemigallas
"es2015"を追加すると、完全なes2015フィーチャーセット –
が追加されます。何もありません...同じエラー_Unexpected token = _コードは、あなた自身で/ https://github.com/josemigallas/を打ちたい場合に表示されます。 users-api/tree/async_await_es5 – josemigallas