SheetJS:错误:不支持 ES 模块 /node_modules/xlsx/dist/cpexcel.full.mjs 的 require()

问题描述 投票:0回答:1

我正在使用 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 模块中都可用。

有人知道如何解决这个问题吗?

import nestjs xlsx commonjs sheetjs
1个回答
0
投票

由于您的项目使用 CJS,因此您应该使用

import()
表达式来加载仅限 ESM 的模块,如 NodeJS 文档中所述:https://nodejs.org/api/esm.html#import-expressions

© www.soinside.com 2019 - 2024. All rights reserved.