На этот модуль можно ссылаться только с помощью импорта/экспорта ECMAScript, включив флаг «esModuleInterop» и сославшись на его экспорт по умолчанию

#typescript #mocha.js #chai

Вопрос:

Я создаю свою тестовую платформу API с помощью TypeScript, и я новичок в ней.

Я создал этот вспомогательный файл assertions.ts

 import * as chai from 'chai';

interface response {
    status: number
    body: object
}

const assertResponseStatusCode =
    (response:response, statusCode:number) =>
        chai.expect(response.status).to.deep.equals(statusCode);

const assertSuccessResponseStatusCode = (response:response) =>
    assertResponseStatusCode(response, 201)

export = {assertSuccessResponseStatusCode}
 

Затем я начал использовать их в своем файле спецификаций, как показано ниже

 import * as auth from '../Helpers/auth';
import * as assert from '../Helpers/assertions';
import { user } from '../Samples/user';

describe('login', () => {
    it('should return access token with valid credentials', async() => {
        const response = await auth.login(user);
        console.log(response.body);
        assert.assertSuccessResponseStatusCode(response);
    });
});
 

Я получаю эту ошибку, на этот модуль можно ссылаться только с помощью импорта/экспорта ECMAScript, включив флаг «esModuleInterop» и сославшись на его экспорт по умолчанию. для этой строки import * as assert from '../Helpers/assertions'; хотя esModuleInterop установлено значение true в tsconfig.json .

Ответ №1:

Это исправлено для меня, когда я изменил инструкцию импорта на import assert from '../Helpers/assertions';

на самом деле, причиной проблемы был знак равенства в экспорте, где я экспортирую один объект export = {assertSuccessResponseStatusCode}

Если изменить на export{assertSuccessResponseStatusCode} , импорт все будет работать тогда.