我正在处理一个正在加载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;
//#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系统,该错误甚至从未在其他系统上出现。
感谢任何帮助人员!
答案 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
而不是浏览器。