#javascript #node.js #google-chrome #browserify
Вопрос:
Я пытаюсь построить простую node.js сторона app. node работает нормально, но браузер не распознает функцию require. Чтобы обойти это, я использую Browserify. Я установил Browserify и запустил » browserify index.js -о bundle.js-командование. Но когда я запускаю браузер, я получаю «Неперехваченную ошибку типа: Не могу прочитать свойство «прототип» неопределенной» ошибки в bundle.js. Ошибка находится в следующей строке bundle.js.
var res = Object.create(http.ServerResponse.prototype)
Независимо от того, что я пытаюсь, я не могу исправить это, поэтому я готов сдаться. Любая помощь будет оценена по достоинству.
Мой index.js заключается в следующем:
const express = require('express');
const app = express();
const path = require('path');
const bodyParser = require('body-parser');
const cors = require('cors');
const port = 3000; //Set port to 3000.
app.use( bodyParser.json() ); // to support JSON-encoded bodies
app.use(bodyParser.urlencoded({ // to support URL-encoded bodies
extended: true}));
app.use(cors());
В моем index.html, У меня есть следующие включенные.
<script src="bundle.js"></script>
<script src="index.js"></script>
Комментарии:
1. отформатируйте код правильно, используйте блок кода для написания кода.
Ответ №1:
Browersify может транспилировать JavaScript, чтобы устранить необходимость в том, чтобы браузер поддерживал модульную систему, хотя он не может «заполнять» библиотеки и фреймворки, доступные для NodeJS, например, запускать HTTP-сервер, как в вашем случае, используя express
модуль. Они нуждаются в надлежащей среде выполнения NodeJS и не могут работать в простом браузере.
Браузеры предназначены для подключения к веб-серверам, а не сами являются веб-серверами!
Ограничения безопасности браузеров не позволят открыть TCP-порт. Мое предложение: запустите express
сервер как отдельный процесс на Node.js время выполнения и используйте асинхронный JavaScript и XML (AJAX) для связи с ним.
Комментарии:
1. Спасибо, но не могли бы вы, пожалуйста, рассказать мне немного подробнее? Как запустить экспресс-сервер как отдельный процесс? код js на стороне браузера все равно не распознает функцию require, и что мне с этим делать? Наконец, можете ли вы как-нибудь дать мне общее представление о том, как использовать AJAX? Спасибо.
2. Я связал введение MDN с AJAX в ответе, чтобы запустить отдельный процесс, вам нужно создать совершенно другой экземпляр и разместить его где-нибудь, и ваш браузер очень хорошо распознает вашу функцию require с помощью browserify, хотя и не может создать HTTP-сервер, я прошу вас повторить мой ответ 😄.
3. Еще раз спасибо. Я прохожу через ссылку MDN re AJAX и пытаюсь понять ее, потому что я новичок. Я предполагаю, что мне нужно будет запустить свой локальный сервер за пределами браузера, а не внутри index.js код через Экспресс. Я думаю, что смогу сделать это, установив инструмент Веб-сервер для chrome из интернет-магазина chrome, или я могу установить http-сервер глобально в npm. Можете ли вы сказать мне, на правильном ли я пути, или вы можете предложить что-нибудь еще?
4. Или я могу продолжать использовать экспресс-сервер, но запускать его как отдельный процесс, но я не знаю, как запустить его как отдельный процесс, и, возможно, вы можете направить меня в правильном направлении.
5. Исправьте, что я говорю, что вы можете продолжать использовать экспресс-сервер или развернуть http-сервер глобально с помощью вашего метода, он работает в обоих направлениях! AJAX-это просто средство для подключения размещенного веб-сервера и нашего отдельного локального сервера!