【问题标题】:This module can only be referenced with ECMAScript imports/exports by turning on the 'esModuleInterop' flag and referencing its default export通过打开“esModuleInterop”标志并引用其默认导出,只能使用 ECMAScript 导入/导出引用此模块
【发布时间】:2021-08-14 18:12:26
【问题描述】:

我正在使用 TypeScript 创建我的 API 测试框架,但我是新手。

我创建了这个帮助文件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);
    });
});

我收到此错误只能通过打开“esModuleInterop”标志并引用其默认导出来使用 ECMAScript 导入/导出来引用此模块。。对于这一行 import * as assert from '../Helpers/assertions'; 尽管 esModuleInteroptsconfig.json 中设置为 true。

【问题讨论】:

    标签: typescript mocha.js chai


    【解决方案1】:

    我也遇到了这个问题,另一个答案给出了一个解决方案,但我认为在这种情况下更好的解决方案是改变:

    export = {assertSuccessResponseStatusCode}
    

    收件人:

    export {assertSuccessResponseStatusCode}
    

    第一种方法是 TypeScript 与 CommonJS 模块的互操作,但你只能导入像 import assertions from './assertions' 这样的模块。第二个是 ESM 导出,可以作为 import { assertSuccessResponseStatusCode } from './assertions' import * as assertions from './assertions' 导入。它还允许您将默认导出与其他导出一起使用。

    【讨论】:

      【解决方案2】:

      当我将导入语句更改为 import assert from '../Helpers/assertions'; 时,它已为我修复

      实际上,导致问题的原因是导出中的等号,我导出一个对象export = {assertSuccessResponseStatusCode}

      如果改成export{assertSuccessResponseStatusCode},那么import all就可以了。

      【讨论】:

        猜你喜欢
        • 2020-11-28
        • 2020-09-28
        • 2020-01-17
        • 1970-01-01
        • 2021-11-19
        • 2020-03-02
        • 1970-01-01
        • 2022-06-12
        • 2018-05-16
        相关资源
        最近更新 更多