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 (которая заменяет обратную косую черту в дорожках и обрабатывает еще несколько случаев)