我正在使用 NestJS/TypeScript,我的一个服务文件具有以下 imports,这些内容取自他们的 (SheetJS) 文档页面。
/* load the codepage support library for extended support with older formats */
import * as cpexcel from 'xlsx/dist/cpexcel.full.mjs';
import * as XLSX from 'xlsx/xlsx.mjs';
/* load 'fs' for readFile and writeFile support */
import { Injectable } from '@nestjs/common';
import { DSRequestContextService } from '@shared/services/context/context_service';
import { DSLogService } from '@shared/services/log/log.service';
XLSX.set_fs(fs);
XLSX.stream.set_readable(Readable);
XLSX.set_cptable(cpexcel);
但是我收到以下错误:
[错误] 18:11:27 错误:不支持 ES 模块 /mnt/d/Repos/document-engine/node_modules/xlsx/dist/cpexcel.full.mjs 的 require()。 相反,将 /mnt/d/Repos/document-engine/node_modules/xlsx/dist/cpexcel.full.mjs 的需求更改为动态 import() ,该动态 import() 在所有 CommonJS 模块中都可用。
有人知道如何解决这个问题吗?
由于您的项目使用 CJS,因此您应该使用
import()
表达式来加载仅限 ESM 的模块,如 NodeJS 文档中所述:https://nodejs.org/api/esm.html#import-expressions