Не удается разрешить "child_process" в модуле xmlhttprequest - PullRequest
0 голосов
/ 22 ноября 2018

Я работаю над классом DataConnector, который загружает файл JSON.Все за пределами этого класса отлично работает в моем приложении, поэтому я не думаю, что проблема возникает в другом месте.

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, веб-пакет сможет отлично связать мое приложение.Я также работал над этим ранее сегодня на другом ПК, и он действительно каждый раз работал отлично.

Я использовал npm i -g xmlhttprequest npm i xmlhttprequest npm i xmlhttprequest --save

У xmlhttprequest есть файлы в папке node_modules в папке моего проекта, и я точно следую инструкциям readme.

Честно говоря, я никогда не был так смущен, тем более что эта ошибка даже не обнаруживалась в другой системе, несмотря на то, что оба были windows 10системы с установленным программным обеспечением для сохранения.

Спасибо за любую помощь, ребята!

1 Ответ

0 голосов
/ 22 ноября 2018

Пакет xmlhttprequest предназначен для серверной JavaScript.Пакет child_process встроен в NodeJS.Это не пакет NPM, поэтому его нельзя загрузить или включить в какое-либо приложение, кроме запуска на NodeJS.Это пакет, разработанный специально для обработки внутренних функций NodeJS.

Появляется, если вы пытаетесь использовать пакет xmlhttprequest на внешнем интерфейсе.Поскольку пакет xmlhttprequest работает только на NodeJS, вы получаете сообщение об ошибке, что child_process не существует, поскольку он не существует в браузере внешнего интерфейса.Если это так, вам может быть приятно узнать, что XMLHttpRequest встроен в браузеры.Причина, по которой существует пакет NodeJS, заключается в том, чтобы имитировать врожденную функциональность браузера.Возможно, вам удастся просто удалить пакет целиком и сослаться на класс XMLHttpRequest без ошибок.

Если вы работаете над кодом для поддержки как внутреннего, так и внешнего интерфейса, вы можете получить что-то вродеthis:

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

Если вы используете Webpack для объединения back end приложения, вам может потребоваться настроить его на целевое node вместо браузера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...