只能通过打开 'esModuleInterop' 标志并引用其默认导出来使用 ECMAScript imports/exports 引用此模块
This module can only be referenced with ECMAScript imports/exports by turning on the 'esModuleInterop' flag and referencing its default export
我正在使用 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 imports/exports 引用。 .对于此行 import * as assert from '../Helpers/assertions';
尽管 esModuleInterop
在 tsconfig.json
.
中设置为 true
当我将导入语句更改为 import assert from '../Helpers/assertions';
时,它对我来说是固定的
实际上,导致问题的原因是我导出一个对象的导出中的等号export = {assertSuccessResponseStatusCode}
如果改成export{assertSuccessResponseStatusCode}
,import all就可以了。
我也 运行 进入这个,另一个答案给出了一个解决方案,但我认为在这种情况下更好的解决方案是改变:
export = {assertSuccessResponseStatusCode}
收件人:
export {assertSuccessResponseStatusCode}
第一种方法是 TypeScript 与 CommonJS 模块的互操作,但您只能导入像 import assertions from './assertions'
这样的模块。第二个是 ESM 导出,可以导入为 import { assertSuccessResponseStatusCode } from './assertions'
或 import * as assertions from './assertions'
。它还允许您将默认导出与其他导出一起使用。
我正在使用 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 imports/exports 引用。 .对于此行 import * as assert from '../Helpers/assertions';
尽管 esModuleInterop
在 tsconfig.json
.
当我将导入语句更改为 import assert from '../Helpers/assertions';
实际上,导致问题的原因是我导出一个对象的导出中的等号export = {assertSuccessResponseStatusCode}
如果改成export{assertSuccessResponseStatusCode}
,import all就可以了。
我也 运行 进入这个,另一个答案给出了一个解决方案,但我认为在这种情况下更好的解决方案是改变:
export = {assertSuccessResponseStatusCode}
收件人:
export {assertSuccessResponseStatusCode}
第一种方法是 TypeScript 与 CommonJS 模块的互操作,但您只能导入像 import assertions from './assertions'
这样的模块。第二个是 ESM 导出,可以导入为 import { assertSuccessResponseStatusCode } from './assertions'
或 import * as assertions from './assertions'
。它还允许您将默认导出与其他导出一起使用。