Ошибка компиляции TypScript. Выражения «await» верхнего уровня разрешены только в том случае, если для параметра «модуль» установлено значение

Я пытаюсь создавать динамические тесты на основе таблицы Excel с помощью testcafe, используя TypeScript. Это работает гладко... пока я не попытаюсь динамически создавать «тесты» «приспособления».

Мой код:

import { fixture, test, GFunctions } from './index';

fixture`API Testing with TestCafe`
.page`about:blank`;

// Assume testData is an array of test definitions
let gFunctionName: any = getFunctionName()
const testData: any = await getTestData(gFunctionName)

console.info(testData)

for (const data of testData) {

    test(`APITest: ${data.gFunctionName}`, async (t) => {
        // Initialisations
        const { token }: { token: any; } = await GFunctions.getAccessToken(t, gFunctionName);
        // const gfuctionResponse: any = await GFunctions.getParamsAndExecute(data.index, data.response, t, token, gFunctionName);
        // console.info('\x1b[31m%s\x1b[0m', `Status: ${gfuctionResponse.status} >> ${data.result_status}`);
    });

}

function getFunctionName() {
return GFunctions.getGFunctionName(\__filename)
}
async function getTestData(gFunctionName: string) {
const { testData }: { testData: any } = await GFunctions.getTestDefinition(gFunctionName);
return testData;
}

Когда я запускаю код, я всегда получаю следующую ошибку:

ERROR Cannot prepare tests due to the following error:

Error: TypeScript compilation failed.
D:/Repositories/WAS_API-Testing/TestCafe/environments/fo-wastest-eshop-regression.was.local/tests/_gGetGlobalConfigVar.apitest.ts (9, 23): 
Top-level 'await' expressions are only allowed when the 'module' option is set to 
'es2022', 'esnext', 'system', 'node16', or 'nodenext', 
and the 'target' option is set to 'es2017' or higher.

пакет.json:

{
    "type": "module",
    "name": "testcafe-tests",
    "description": "TestCafe-Tests",
    "version": "24.01.0",
    "scripts": {
        "TEST": "testcafe chrome:headless tests/_gGetGlobalConfigVar.apitest.ts --ts-config-path=./tsconfig.test.json -r spec,xunit:./reports/report.apitest.xml,html:reports/report.apitest.html"
    },
    "dependencies": {
        "exceljs": "^4.4.0",
        "testcafe-reporter-html": "^1.4.6"
    },
    "devDependencies": {
        "testcafe": "^3.6.0"
    },
    "volta": {
        "node": "16.13.1"
    }
}

tsconfig.json

{
    "compilerOptions": {
        // "target": "ES6",
        "module": "CommonJS",
        "strict": true,
        "resolveJsonModule": true,
        "skipLibCheck": true,
        "forceConsistentCasingInFileNames": false,
        "esModuleInterop": true
    },
    "include": [
        "../../opacc_modules/"
    ]
}

tsconfig.test.json

{
    "compilerOptions": {
        "target": "ES2020",
        "module": "ES2020",
        "strict": true,
        "resolveJsonModule": true,
        "skipLibCheck": true,
        "forceConsistentCasingInFileNames": false,
        "esModuleInterop": true,
        "moduleResolution": "node"
    },
    "include": [
        "**/*.apitest.ts"
    ]
}

Есть ли у кого-нибудь идеи, как это решить? Насколько я понимаю, я использую упомянутый объект/модуль...?

С надеждой Римский

  • Пытался отредактировать сам tsconfig.json --> кажется, это запрещено... You cannot override the "target" compiler option in the TypeScript configuration file.You cannot override the "module" compiler option in the TypeScript configuration file.
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
87
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Сообщения об ошибках обычно полезны:

Выражения «await» верхнего уровня разрешены только в том случае, если для параметра «module» установлено значение «es2022», «esnext», «system», «node16» или «nodenext», а для параметра «Цель» установлено значение «es2017» или выше.

Просто следуйте инструкциям. Измените свои tsconfig.json.

Я сделал. Но потом, как уже упоминалось, я получил это сообщение

Вы не можете переопределить параметр компилятора «target» в файле конфигурации TypeScript. Вы не можете переопределить параметр компилятора «модуль» в файле конфигурации TypeScript.

Ответ принят как подходящий

Как упоминалось в сообщении, вы не можете переопределить параметры компилятора «цель» и «модуль» в TestCafe.

Но чтобы использовать выражения ожидания верхнего уровня, подобные вашему

(const testData: any = await getTestData(gFunctionName)),

вы можете обернуть вызов getTestData в выражение немедленно вызываемой функции.

https://developer.mozilla.org/en-US/docs/Glossary/IIFE#execute_an_async_function

попробую это! Спасибо :)

Raydir 06.05.2024 12:04

Это сработало. К сожалению, кажется, что - когда на верхнем уровне нет подпрограмм test(), Testcafe просто полностью игнорирует код - Попробую еще немного. Если я не смогу запустить его, я создам основной тест и выполню тестовые данные в нем целиком. Спасибо

Raydir 06.05.2024 12:27

Другие вопросы по теме