Nodejs абсолютные пути в окнах с прямой косой чертой

Могу ли я иметь абсолютные пути с косой чертой в windows в nodejs? Я использую что-то вроде этого:

global.__base = __dirname + '/';
var Article = require(__base + 'app/models/article');

Но в окнах сборка не работает, так как требуется нечто вроде C:\Something\Something/apps/models/article. Я пробовал использовать webpack. Итак, как обойти эту проблему, так что требование остается тем же самым, т.е. __base + 'app/models/src'?

Ответ 1

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

В Node.js вы можете легко получить текущее имя исполняемого файла и его каталог, просто используя переменные __filename и __dirname соответственно.

Чтобы исправить косую черту вперед и назад в соответствии с вашей системой, вы можете использовать модуль path Node.js

var path = require('path');

Как здесь, это путаный путь, и я хочу, чтобы это было правильно, если я хочу использовать его на своем сервере. Здесь модуль path делает все для вас

var randomePath = "desktop//my folder/\ myfile.txt";

var correctedPath = path.normalize(randomePath); //that that

console.log(correctedPath);
desktop/my folder/myfile.txt

Если вы хотите абсолютный путь к файлу, вы также можете использовать функцию resolve модуля path

var soemPath = "./img.jpg";
var resolvedPath = path.resolve(soemPath);

console.log(resolvedPath);
/Users/vikasbansal/Desktop/temp/img.jpg

Ответ 2

Я рекомендую против этого, так как он исправляет node сам, но... ну, никаких изменений в том, как вы нуждаетесь в вещах.

(function() {
  "use strict";
  var path = require('path');
  var oldRequire = require;
  require = function(module) {
    var fixedModule = path.join.apply(path, module.split(/\/|\\/));
    oldRequire(fixedModule);
  }
})();

Ответ 3

Наконец я сделал следующее:

var slash = require('slash');
var dirname = __dirname;
if (process.platform === 'win32') dirname = slash(dirname);

global.__base = dirname + '/';

И затем потребуется var Article = require(__base + 'app/models/article');. Это использует косую черту npm (которая заменяет обратную косую черту в дорожках и обрабатывает еще несколько случаев)