javascript - 我无法导入我的一个节点模块,而其他模块可以正常工作
我的 TypeScript 文件夹结构是这样的
src
|aws folder
| |__s3-controller.ts
|events-service folder
| |__events-service-request.ts
|__index.ts
我的 index.ts 定义了以下导出内容:
export * from './aws/s3-controller.js';
export * from './aws/sns-controller.js';
export * from './events-service/events-service-request.js';
文件 events-service-request.ts 包含以下内容
import axios from 'axios';
/**
*
*/
export default class EventsService {
baseUrl: string;
constructor(baseUrl: string) {
this.baseUrl = baseUrl;
}
/**
*
*/
async sendRequest(body: {}): Promise<void> {
axios.post(
`${this.baseUrl}/twirp/events.domain.Domain/FireDomainEvent`,
body,
);
}
}
我的 package.json 内容如下:
"exports": {
".": "./dist/esm/actions/index.js",
"./utils": "./dist/esm/utils/index.js"
},
我正在尝试使用 import EventsService from 'qa-data-tool/utils'; 将我的 events-service-request.js 中的函数导入到我的普通 Node 项目中,但我一直收到以下错误信息:
import EventsService from 'qa-data-tool/utils';
^^^^^^^^^^^^^
SyntaxError: The requested module 'qa-data-tool/utils' does not provide an export named 'default'
但出于某种原因,我可以正确地从我的 aws 文件夹导出模块。
我似乎无法弄清楚我缺少了什么。我已经仔细检查过,认为一切都设置正确,但我很确定我遗漏了一些微小的东西,正在困扰着我。
答案#1
星号导出不会重新导出模块的默认导出,否则你就会有三个 default 相互竞争。
你应该使用
命名导出之一
export class EventsService { … }带有初始再出口
export * from './events-service/events-service-request.js';或默认导出
export default class EventsService { … }使用别名的重新导出
export { default as EventsService } from './events-service/events-service-request.js';
