无法解析模块xmlhttprequest中的“ child_process”

时间:2018-11-21 23:15:34

标签: javascript node.js xmlhttprequest

我正在处理一个正在加载JSON文件的DataConnector类。在我的应用程序中,该类以外的所有内容都可以正常运行,因此,我认为问题不会在其他任何地方出现。

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;

enter image description here main.js

//#File: QuestionJS.js
//var $ = require('jquery');
Answer = require('./Answer');
Question = require('./Question');
ThemeGenerator = require('./ThemeGenerator');
DataConnector = require('./DataConnector')

//console.log(DataConnector.getMessage());

如果我不再需要DataConnector,则webpack可以很好地捆绑我的应用程序。我今天早些时候还在另一台PC上进行这项工作,实际上每次都运行得很好。

我用过 npm i -g xmlhttprequest npm我xmlhttprequest npm我xmlhttprequest --save

xmlhttprequest在我的项目文件夹的node_modules文件夹中有文件,我正在严格遵循自述文件。

老实说,我从未感到困惑,特别是因为即使这两个都是安装了保存软件的Windows 10系统,该错误甚至从未在其他系统上出现。

感谢任何帮助人员!

1 个答案:

答案 0 :(得分:0)

xmlhttprequest软件包用于服务器端 JavaScript。 child_process软件包内置在NodeJS中。它不是NPM软件包,因此不能在NodeJS上运行之外下载或包含在任何应用程序中。这是一个专门用于处理NodeJS内部功能的软件包。

如果您尝试使用前端的xmlhttprequest软件包,则会显示。由于xmlhttprequest软件包仅在NodeJS上有效,因此您将收到child_process不存在的错误,因为它在前端浏览器中不存在。在这种情况下,您可能很高兴知道XMLHttpRequest已内置在浏览器中。存在NodeJS软件包的原因是为了模仿浏览器的固有功能。您也许可以整体上删除该程序包,并毫无错误地引用XMLHttpRequest类。

如果您正在开发同时支持后端和前端的代码,则可能会导致如下所示:

if (typeof XMLHttpRequest === 'undefined') {
  global.XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest;
}

如果您使用Webpack捆绑后端应用程序,则可能需要将其配置为定位到node而不是浏览器。