使用ActiveXObject写入文本文件时出现ReferenceError: ActiveXObject is not defined错误
解决
ReferenceError: ActiveXObject is not defined 错误 咱先把问题拆明白:你写的这段代码依赖ActiveXObject,但这个对象只在老旧的IE浏览器(或IE兼容模式)里才支持,现代主流浏览器(Chrome、Firefox、Edge等)出于安全和技术迭代的原因,早就彻底移除了对ActiveX的支持,所以运行时自然会报这个错误。
你的代码核心需求是创建一个文本文件并写入多行内容,下面分两种常见场景给你替换方案:
场景1:在现代浏览器网页中实现文件下载
现代浏览器不允许直接读写本地文件(防止恶意操作),但可以通过生成Blob对象,结合a标签触发下载的方式实现需求:
// 准备要写入的内容 const content = Array.from({length: 8}, (_, i) => `Test${i+1}`).join('\n'); // 创建Blob对象 const blob = new Blob([content], {type: 'text/plain'}); // 创建下载链接 const a = document.createElement('a'); a.href = URL.createObjectURL(blob); a.download = 'test.txt'; // 触发下载 a.click(); // 释放URL对象 URL.revokeObjectURL(a.href);
场景2:在Node.js环境中写入本地文件
如果是在Node.js里运行,直接用内置的fs模块就行,完全不需要ActiveX:
const fs = require('fs'); const content = Array.from({length: 8}, (_, i) => `Test${i+1}`).join('\n'); // 写入文件(异步方式,推荐) fs.writeFile('test.txt', content, (err) => { if (err) throw err; console.log('文件已成功写入!'); }); // 或者同步方式 // fs.writeFileSync('test.txt', content); // console.log('文件已成功写入!');
最后提醒一句:ActiveX是非常老旧且存在安全风险的技术,现在已经被完全淘汰了,建议彻底放弃依赖它的写法~
内容的提问来源于stack exchange,提问作者Sagar Patil
相关产品推荐
相关产品推荐

