You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用nodemon启动项目时持续生成.node-xmlhttprequest-sync文件求助

解决nodemon启动时生成.node-xmlhttprequest-sync-*临时文件的问题

看到你遇到的这个问题确实挺闹心的——用node app.js跑完全正常,换成nodemon就疯狂生成带随机数的临时文件,谷歌搜不到现成方案,我来给你几个实用的排查方向和解决办法:

可能的原因分析

这个问题大概率和xmlhttprequest模块的同步请求机制有关:当模块发起同步XMLHttpRequest请求时,会创建临时文件来处理同步IO,而nodemon的文件监听机制可能干扰了临时文件的自动清理流程,甚至因为文件变化触发的重启逻辑,导致临时文件反复生成。

具体解决方案

1. 让nodemon直接忽略这些临时文件

先阻止nodemon监听这类临时文件,避免不必要的重启循环,也能减少文件生成频率。创建一个nodemon.json配置文件,内容如下:

{
  "ignore": [".node-xmlhttprequest-sync-*"]
}

之后用nodemon app.js启动,nodemon就会自动跳过对这些文件的监听了。

2. 升级或替换xmlhttprequest模块

旧版本的xmlhttprequest可能存在同步请求临时文件清理不彻底的bug,先试试升级到最新版:

npm update xmlhttprequest

如果升级后问题依旧,建议换成更现代的HTTP请求库,比如node-fetch——它原生支持Promise,完全不需要依赖同步XMLHttpRequest,从根源上避免临时文件生成:

npm install node-fetch

然后把代码里的同步请求写法替换成异步的node-fetch调用,举个例子:

// 原来的同步XMLHttpRequest写法
const XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest;
const xhr = new XMLHttpRequest();
xhr.open('GET', 'https://example.com', false);
xhr.send();
const response = xhr.responseText;

// 替换成node-fetch异步写法
const fetch = require('node-fetch');
async function fetchData() {
  const response = await fetch('https://example.com');
  const data = await response.text();
  return data;
}

3. 把同步请求改成异步模式

既然你的应用已经用到了Promise,同步请求本身就和异步理念冲突,而且在Node.js里同步IO也不是最佳实践。检查代码里的同步XMLHttpRequest调用,改成异步模式,这样xmlhttprequest模块就不会生成临时文件了:

// 异步版XMLHttpRequest写法
const XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest;
function fetchData() {
  return new Promise((resolve, reject) => {
    const xhr = new XMLHttpRequest();
    xhr.open('GET', 'https://example.com', true);
    xhr.onload = () => {
      if (xhr.status >= 200 && xhr.status < 300) {
        resolve(xhr.responseText);
      } else {
        reject(new Error(`请求失败,状态码:${xhr.status}`));
      }
    };
    xhr.onerror = () => reject(new Error('网络请求出错'));
    xhr.send();
  });
}

验证效果

尝试上面的方法后,重新用nodemon启动应用,应该就不会再生成那些烦人的临时文件了。如果还是有问题,可以检查是否有其他依赖库间接使用了同步XMLHttpRequest,通过npm ls xmlhttprequest查看依赖树,逐步排查根源。

内容的提问来源于stack exchange,提问作者M. Mez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 02:27:44