【问题标题】:Docxtemplater - RangeError: Invalid string lengthDocxtemplater - RangeError:无效的字符串长度
【发布时间】:2021-10-05 05:55:09
【问题描述】:

我正在将一个非常大的 txt 文件 (~40MB) 转换为 docx,但该字符串似乎对于 Node.js 来说太大而无法处理。
有什么解决办法吗?还是其他解决方案?
我的代码:

import fs from 'fs';
import path from 'path';
import Docxtemplater from 'docxtemplater';
import Pizzip from 'pizzip';

const txt = path.parse(process.argv[2]);

const text = fs.readFileSync(process.argv[2]).toString().split('\n');

const docx = new Docxtemplater()
    .loadZip(new Pizzip(fs.readFileSync('./template.docx')))
    .setData({text: text})
    .render();
fs.writeFileSync(`./down/${txt.name}.docx`,
    docx.getZip().generate({type: 'nodebuffer'}));
<ProjectDir>\node_modules\docxtemplater\js\join-uncorrupt.js:90
    return full + part;
                ^

RangeError: Invalid string length
    at <ProjectDir>\node_modules\docxtemplater\js\join-uncorrupt.js:90:17
    at Array.reduce (<anonymous>)
    at Object.joinUncorrupt (<ProjectDir>\node_modules\docxtemplater\js\join-uncorrupt.js:51:16)
    at LoopModule.render (<ProjectDir>\node_modules\docxtemplater\js\modules\loop.js:484:24)
    at moduleRender (<ProjectDir>\node_modules\docxtemplater\js\render.js:15:30)
    at <ProjectDir>\node_modules\docxtemplater\js\render.js:45:26
    at Array.map (<anonymous>)
    at render (<ProjectDir>\node_modules\docxtemplater\js\render.js:43:24)
    at XmlTemplater.render (<ProjectDir>\node_modules\docxtemplater\js\xml-templater.js:249:22)
    at <ProjectDir>\node_modules\docxtemplater\js\docxtemplater.js:424:21

【问题讨论】:

  • 这将很快在新版本的 docxtemplater 中修复,可能在本月或下个月。

标签: javascript node.js typescript docxtemplater


【解决方案1】:

这是现在应该在我刚刚发布的 docxtemplater 3.27.1 中修复的问题。

npm install docxtemplater@^3.27

因此应该解决您的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-29
    • 2020-01-31
    • 2014-12-31
    • 1970-01-01
    • 2016-12-18
    • 2019-08-19
    • 2017-09-21
    • 2019-02-11
    相关资源
    最近更新 更多