Обновление до Angular 10 ломает ExcelJs

Я только что обновил свое приложение с последней версии 9 до angular 10, используя ng update. Я знаю, что есть значительные изменения, и по большей части он хорошо обновлен, однако в настоящее время я получаю сообщение об ошибке от exceljs:

"export 'Workbook' (imported as 'Excel') was not found in 'exceljs/dist/exceljs'

До обновления использовалась версия exceljs 2.0.1. Теперь он использует exceljs 4.0.1. (Это на одну версию раньше последней версии, потому что есть ошибка, препятствующая компиляции в последней версии из-за того, что аргумент параметра помечен как обязательный. Это не должно иметь значения.)

Оператор импорта выглядит следующим образом:

import * as Excel from "exceljs/dist/exceljs";

Сам код довольно типичен для exceljs. У меня есть служба, предоставляющая данные: HttpResponse, и я загружаю ее в книгу, чтобы извлечь некоторые столбцы.

this.myService.getMySpreadsheet().subscribe((data: HttpResponse<Blob>) => {
      new Response(data.body).arrayBuffer().then(arrayBuffer => {
        const wb: Excel.Workbook = new Excel.Workbook();
        wb.xlsx.load(arrayBuffer).then(() => {

          const ws1 = wb.getWorksheet("My Worksheet");

Но сейчас он даже не может добраться до этого кода, потому что угловая компиляция не работает.

Любая идея, как я могу решить эту проблему? Есть ли какой-то флаг обратной совместимости, который мне нужно добавить?


person tone    schedule 01.07.2020    source источник
comment
Вы пытались повторно запустить npm install?   -  person Erez.S    schedule 01.07.2020
comment
да, одна из первых вещей, которые я сделал.   -  person tone    schedule 01.07.2020
comment
Я только что обновил узел до 12.18.2. Это не имело никакого значения.   -  person tone    schedule 01.07.2020
comment
В итоге мне пришлось откатиться. Это может потребовать пересмотра со стороны команды ExcelJS. Я надеюсь, что кто-то скоро заработает, или есть работающая альтернатива.   -  person tone    schedule 13.08.2020
comment
Можете ли вы поделиться ошибкой, которую он дает при компиляции?   -  person Johar Zaman    schedule 02.09.2020
comment
@tone Вы заглянули в это https://github.com/exceljs/exceljs/issues/810   -  person Abhishek    schedule 03.09.2020


Ответы (1)


У меня exceljs работает с agnular 10 с настройками ниже tsconfig.app.json, обратите внимание на свойства paths и types под compilerOptions -

{
  "extends": "./tsconfig.base.json",
  "compilerOptions": {
    "outDir": "./out-tsc/app",
    "paths": {
     "exceljs": [
       "node_modules/exceljs/dist/exceljs.min"
     ]
   },
    "types": ["node"],
  },
  "files": [
    "src/main.ts",
    "src/polyfills.ts"
  ],
  "include": [
    "src/**/*.d.ts"
  ]
}

а затем вы можете импортировать Workbook и создать рабочий лист, как показано ниже:

import { Workbook } from 'exceljs';
....
let workbook = new Workbook();
let worksheet = workbook.addWorksheet('Sample sheet');

Пожалуйста, ознакомьтесь с рабочим примером приложения здесь

person Akash    schedule 04.09.2020