请求协助修复XML读取代码中的MODULE_NOT_FOUND错误
XML读取脚本报错修复方案
原代码
function readXML() { var xml= new XMLHttpRequest(); xml.open('GET','C:\Users\ppriyadharshini\Documents\Javascript\eFORM-MAL_2022-08-26_Merlana Buenaflor_Due Date 2022-09-23_Calculation (1).xml',false); xml.send(); varxmlData=xml.responseXML; if(!xmlData) { xmlData=(new DOMParser());parseFromString(xml.responseText,'text/xml'); var req= xmlData.getElementsByTagName("my:MDRequest"); var reqs=req[0].getElementsByTagName("my:RequestingSite")[0].firstChild.data; window.alert("Requesting Site:"+reqs); } }
报错信息
Error: Cannot find module 'C:\Users\ppriyadharshini\XMLExtraction.js' at Function.Module._resolveFilename (node:internal/modules/cjs/loader:956:15) at Function.Module._load (node:internal/modules/cjs/loader:804:27) at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12) at node:internal/main/run_main_module:17:47 { code: 'MODULE_NOT_FOUND', requireStack: []
问题排查与修复
模块找不到的原因
你用Node.js运行了这段浏览器端代码。XMLHttpRequest是浏览器专属API,Node.js环境没有这个对象;同时Node.js按模块规则加载文件,找不到指定的脚本路径才触发这个错误。先修正代码语法错误
- 变量名
varxmlData缺少空格,改为var xmlData - DOMParser调用语法错误,正确写法:
xmlData = new DOMParser().parseFromString(xml.responseText, 'text/xml');
- Node.js环境适配方案
如果要在Node.js中读取本地XML文件,需要用fs模块读取文件,借助xmldom库解析XML:
- 安装依赖:
npm install xmldom - 修改后的代码:
const fs = require('fs'); const { DOMParser } = require('xmldom'); function readXML() { // Windows路径需转义反斜杠 const filePath = 'C:\\Users\\ppriyadharshini\\Documents\\Javascript\\eFORM-MAL_2022-08-26_Merlana Buenaflor_Due Date 2022-09-23_Calculation (1).xml'; // 读取本地XML文件内容 const xmlContent = fs.readFileSync(filePath, 'utf8'); // 解析XML const xmlDoc = new DOMParser().parseFromString(xmlContent, 'text/xml'); const mdRequest = xmlDoc.getElementsByTagName("my:MDRequest"); if (mdRequest.length > 0) { const requestingSite = mdRequest[0].getElementsByTagName("my:RequestingSite")[0]?.firstChild?.data; console.log(`Requesting Site: ${requestingSite}`); } else { console.log("未找到my:MDRequest节点"); } } readXML();
- 浏览器环境适配方案
如果是在浏览器中运行:
- 不能直接访问本地文件路径(浏览器安全限制),需将XML文件放到服务器目录下,用相对路径或服务器URL请求
- 建议改用异步请求(同步请求会阻塞浏览器),示例:
function readXML() { var xml = new XMLHttpRequest(); xml.open('GET', './eFORM-MAL_2022-08-26_Merlana Buenaflor_Due Date 2022-09-23_Calculation (1).xml', true); xml.onload = function() { var xmlData = xml.responseXML; if (!xmlData) { xmlData = new DOMParser().parseFromString(xml.responseText, 'text/xml'); } const req = xmlData.getElementsByTagName("my:MDRequest"); if (req.length > 0) { const reqs = req[0].getElementsByTagName("my:RequestingSite")[0]?.firstChild?.data; window.alert("Requesting Site:" + reqs); } else { window.alert("未找到指定节点"); } }; xml.send(); }
内容的提问来源于stack exchange,提问作者Priyadharshini
相关产品推荐
相关产品推荐

