Javascript Can';“t解决”;儿童“过程”;模块内xmlhttprequest
我正在处理一个加载JSON文件的DataConnector类。在我的应用程序中,这门课以外的一切都运行得非常好,所以我认为这个问题不会出现在其他任何地方Javascript Can';“t解决”;儿童“过程”;模块内xmlhttprequest,javascript,node.js,xmlhttprequest,Javascript,Node.js,Xmlhttprequest,我正在处理一个加载JSON文件的DataConnector类。在我的应用程序中,这门课以外的一切都运行得非常好,所以我认为这个问题不会出现在其他任何地方 var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest; //#File: DataConnector.js var DataConnector = {}; DataConnector.LoadJSON = (function(file,callback) {
var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;
//#File: DataConnector.js
var DataConnector = {};
DataConnector.LoadJSON = (function(file,callback) {
var xobj = new XMLHttpRequest();
console.log(xobj);
xobj.open('GET', file, true);
xobj.overrideMimeType = "application/json";
xobj.onreadystatechange = function () {
if (xobj.readyState == 4 && xobj.status == "200") {
callback(xobj.responseText);
}
};
xobj.send(null);
})
DataConnector.getMessage = function(){
return 'Hello DataConnector';
}
module.exports = DataConnector;
main.js
如果我将DataConnector注释为不需要,webpack可以完美地捆绑我的应用程序。今天早些时候,我还在另一台电脑上做这件事,每次都做得非常好
我用过
npm i-g xmlhttprequest
npm i xmlhttprequest
npm i xmlhttprequest—保存
xmlhttprequest在我的项目文件夹中的node_modules文件夹中有文件,我正在严格遵循自述文件
老实说,我从未如此困惑过,尤其是在另一个系统上从未出现过这个错误,尽管这两个系统都是安装了save软件的windows10系统
谢谢大家的帮助 xmlhttprequest包是为服务器端JavaScript设计的。
子进程
包内置在NodeJS中。它不是NPM包,因此不能下载或包含在NodeJS上运行之外的任何应用程序中。它是一个专门为处理NodeJ内部功能而设计的包
如果您试图在前端使用xmlhttprequest
程序包,则会出现此消息。由于xmlhttprequest
包仅在NodeJ上工作,因此您收到的错误是child\u进程
不存在,因为它在前端浏览器中不存在。如果是这样的话,您可能会很高兴知道这是内置在浏览器中的。NodeJS包存在的原因是为了模仿浏览器固有的功能。您可以将包作为一个整体删除,并无误地引用XMLHttpRequest
类
如果您正在编写同时支持后端和前端的代码,则可能会产生如下结果:
if (typeof XMLHttpRequest === 'undefined') {
global.XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest;
}
如果您使用Webpack捆绑后端应用程序,则可能需要将其配置为指向
节点而不是浏览器。可能需要共享您的Webpack配置,但是:我想可能是我做错了,我正在尝试构建前端组件,这是一个复杂的组件,我试图将其模块化,以便在构建它时可以利用OOP。我知道浏览器有XMLHTTPRequest,但我正试图将此文件捆绑到一个文件中,以便通过轻松设置将其作为单个组件分发。在JavaScript组件中使用类还有其他方法吗?如果node和browser都支持XMLHttpRequest,我不确定为什么会出现问题。浏览器支持XMLHttpRequest,因为它内置于浏览器中。浏览器不支持您正在使用的软件包。服务器上的NodeJS支持它,因为它旨在向服务器提供浏览器内置的XMLHttpRequest功能。因为您不是在开发服务器端应用程序,所以根本不需要该包。
if (typeof XMLHttpRequest === 'undefined') {
global.XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest;
}