Подтвердить что ты не робот

требовать не определено? Node.js

Просто начал работать с Node.js. В моем файле app/js я делаю что-то вроде этого:

app.js

var http = require('http');

http.createServer(function (request, response) {
  response.writeHead(200, {'Content-Type': 'text/plain'});
  response.end('Am I really running a server?!');
}).listen(8080, '127.0.0.1');

console.log('running server!');

Когда я в своем терминале и запускаю node app.js, консоль выдает 'running server!' , но в моем браузере я получаю, Uncaught ReferenceError: require is not defined.

Может кто-нибудь объяснить мне, почему в терминале он работает правильно, а в браузере - нет?

Я использую http-server узла для обслуживания моей страницы.

4b9b3361

Ответ 1

В терминале вы используете приложение node, и оно запускает ваш script. Это совсем другая среда исполнения, чем прямое использование вашего браузера script. Хотя язык Javascript во многом одинаков (как V8, если вы используете браузер Chrome), остальная часть среды исполнения, такая как доступные библиотеки, не одинакова.

node.js - это среда выполнения Javascript на стороне сервера, которая сочетает в себе механизм V8 Javascript с кучей серверных библиотек. require() - одна из таких функций, которая добавляет node.js к среде. Итак, когда вы запускаете node в терминале, вы запускаете среду, содержащую require().

require() не является функцией, встроенной в браузер. Это особенность node.js, а не браузера. Итак, когда вы пытаетесь запустить браузер script, он не имеет require().

Существуют способы запуска некоторых форм кода node.js в браузере (но не все). Например, вы можете использовать заменители браузера для require(), которые работают аналогично (хотя и не одинаково).

Но вы не будете запускать веб-сервер в своем браузере, поскольку это не то, что браузер имеет возможность делать.


Вам может быть интересен browserify, который позволяет использовать node -стильные модули в браузере с помощью операторов require().

Ответ 2

Node.JS - это серверная технология, а не технология браузера. Таким образом, Node -специфические вызовы, такие как require(), не работают в браузере.

Смотрите browserify или webpack, если вы хотите обслуживать модули, зависящие от браузера, от Node.

Ответ 3

Точка 1: Добавьте функцию require(), вызывающую строку кода только в файле app.js или main.js.

Пункт 2. Убедитесь, что требуемый пакет установлен, проверив файл pacakage.json. Если не обновлено, запустите "npm i".

Ответ 4

Чтобы дополнить сказанное выше, ваш js файл читается на стороне клиента, когда у вас есть путь к нему в вашем HTML файле. По крайней мере, это была проблема для меня. У меня это было как скрипт в моем теге в index.html Надеюсь, это поможет!