Оператор ==
проверяет, указывают ли две ссылки на один и тот же объект или нет. .equals()
проверьте фактическое содержимое строки (значение).
Обратите внимание, что метод .equals()
принадлежит классу Object
(суперкласс всех классов). Вам необходимо переопределить его в соответствии с вашим требованием к классу, но для String оно уже реализовано и проверяет, имеет ли две строки одно и то же значение.
String s1 = "Stack Overflow";
String s2 = "Stack Overflow";
s1 == s2; //true
s1.equals(s2); //true
Причина: строка литералы, созданные без нуля, хранятся в пуле строк в области перментонов кучи. Таким образом, оба s1 и s2 указывают на один и тот же объект в пуле. String s1 = new String("Stack Overflow");
String s2 = new String("Stack Overflow");
s1 == s2; //false
s1.equals(s2); //true
Причина. Если вы создаете объект String с использованием ключевого слова new
, ему выделяется отдельное пространство в куче. Я не вижу никаких упоминаний о модуле fs
в настройках вашего опубликованного веб-пакета. Итак, я предполагаю, что ваше приложение вывода (app.js
?) Пытается запросить и использовать fs
. Webpack создает клиентское клиентское приложение, которое будет загружено в браузер; fs
недоступно , недоступно в браузере.
(Дважды проверьте и убедитесь, что вы не пытаетесь, например, читать и записывать файлы на компьютере пользователя, используя fs
внутри вашего клиентского приложения. Это невозможно в браузерном приложении. Для ознакомления с концепцией веб-приложений с внешним и внутренним интерфейсом ознакомьтесь со статьей React App With Node Backend .)