Денормализующий разделитель путей в Node.js в Windows

#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. Пожалуйста, не советуйте людям исправлять стандартную библиотеку вручную.