#node.js #path
#node.js #путь
Вопрос:
В Windows path
модуль Node.js создает все пути с обратной косой чертой. Похоже, что он вызывает свою собственную normalize()
функцию при вызове других функций (например, resolve()
).
Есть ли способ де-нормализовать пути (с косой чертой) без явной замены повсюду?
Я попытался установить path.sep = '/'
, но resolve()
по-прежнему выдает пути с \
.
Комментарии:
1. Не похоже, что это возможно. Каков ваш вариант использования? Возможно, мы сможем предложить лучшее решение, учитывая общую картину.
2. Вариант использования — получить путь к ресурсам относительно другого пути (страницы). Таким образом, результирующий путь, когда появится в
<a href=
, будет этим относительным путем. Кроме того, любой доступный по сети путь использует косую черту, поэтому это должно быть общим требованием для пользователей Windows.3. Ах, вы хотите создавать URL-адреса, а не собственные пути к файлам. Делает ли
url
модуль то, что вы ищете? Смотрите url.resolve . Есть ли другие функции изpath
, которые вам нужны?
Ответ №1:
Вы можете path.sep
или path.parse
разобрать path, а затем объединить его по своему усмотрению.
Комментарии:
1. (path.delimiter предназначен для разделения путей (двоеточие в
/usr/bin:/bin
). Вы имели в виду сентябрь.)
Ответ №2:
У меня была эта проблема с Windows 10. Я решил это с помощью этого скрипта:
var path = require('path');
path.join2 = path.join;
path.sep = '/';
path.join = function(){
var res = path.join2.apply({}, arguments);
res = res.replace(/\/g, path.sep);
return res;
}
//rest of your code
Комментарии:
1. Пожалуйста, не советуйте людям исправлять стандартную библиотеку вручную.