Кусочный код Javascript NodeJS, работающий в Windows, но не в Linux - PullRequest
0 голосов
/ 12 февраля 2019

Я особенно новичок в NodeJS и Javascript и создал небольшое веб-приложение.Мой код работает на компьютере с Windows без проблем.Однако, когда я попытался запустить его на виртуальной машине Linux, он заблокировался в точке без ошибок или исключений.

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

....
var localEntry = entry.split('\\')
if(!localEntry)
localEntry = entry.split('/')

localEntry = localEntry[localEntry.length -1]

this.scripts[extn][localEntry].day1Vars = searchedVars[entry].day1Vars
}

Я был крайне озадачен, обнаружив, что точно такой же код без проблем работает на компьютере с Windows и блокируется наLinux vm из-за одной строки кода, и мне интересно, как это может быть?Строка, ответственная за такое поведение: this.scripts[extn][localEntry].day1Vars = searchedVars[entry].day1Vars

Я ожидаю, что код на Node.js не зависит от платформы, и мысль о строке кода, вызывающей такое различие, вызывает возмущение.Я использую Windows 10 и RHEL 6.9 с 8 ГБ оперативной памяти в обоих.

Может ли кто-нибудь мне помочь, если я что-то упустил или что-то пошло не так?Любая помощь очень ценится.

В соответствии с просьбой людей здесь, Пример значений (в Windows):

entry : "d:\NodeProjects\BApp\uploads\bp\bp\scripts\nodejs\set-nodejs-root.sh"
localEntry : "set-nodejs-root.sh"

Ответы [ 3 ]

0 голосов
/ 12 февраля 2019

Лучше проверить, что такое среда.Например, вы должны разделить на:

Ubuntu .split("/")

Windows .split("\\")

0 голосов
/ 12 февраля 2019

Похоже, что вы работаете с путями, лучшая рекомендация здесь - использовать модуль пути для обработки этих маршрутов:

https://nodejs.org/api/path.html

Вот хорошее объяснение того, какдля обработки маршрутов для обеих систем:

https://nodejs.org/api/path.html#path_windows_vs_posix

Я бы использовал что-то вроде

https://nodejs.org/api/path.html#path_path_parse_path

Чтобы правильно проанализировать пути или если вынужно создать пути, которые вы можете использовать:

https://nodejs.org/api/path.html#path_path_join_paths

Проверьте все различные варианты там, я на 99% уверен, что вы найдете правильный метод для вашего варианта использования

0 голосов
/ 12 февраля 2019

Когда вы указываете путь под окнами, вы должны использовать "\"
Linux использует "/" для пути

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