我可以在nodejs的窗口中使用正斜杠的绝对路径吗?我正在使用这样的东西:
global.__base = __dirname + '/';
var Article = require(__base + 'app/models/article');
但是在Windows上,构建失败了,因为它需要像C:\Something\Something/apps/models/article
这样的东西。我用webpack。那么如何规避这个问题以使要求保持不变,即__base + 'app/models/src'
?
答案 0 :(得分:27)
我知道回答有点迟,但我认为我的回答会对一些访客有所帮助。
在Node.js
中,您只需分别使用__filename
和__dirname
变量即可轻松获取当前正在运行的文件名及其目录。
为了根据您的系统更正正斜杠和反斜杠,您可以使用path
的{{1}}模块
Node.js
就像这里是一个混乱的路径,如果我想在我的服务器上使用它,我希望它是正确的。这里var path = require('path');
模块为您做了一切
var randomPath =“desktop // my folder / \ myfile.txt”;
path
var correctedPath = path.normalize(randomPath); //that's that console.log(correctedPath);
如果您想要文件的绝对路径,那么您也可以使用desktop/my folder/myfile.txt
模块的resolve
函数
path
var somePath = "./img.jpg"; var resolvedPath = path.resolve(somePath); console.log(resolvedPath);
答案 1 :(得分:6)
现在是2020年,距问题发表已经有5年了,但我希望对别人来说我的回答将是有用的。我已经使用了replace方法,这是我的代码(express js项目):
const viewPath = (path.join(__dirname, '../views/')).replace(/\\/g, '/')
exports.articlesList = function(req, res) {
res.sendFile(viewPath + 'articlesList.html');
}
答案 2 :(得分:0)
我建议不要这样做,因为它是修补节点本身,但是......好吧,没有改变你需要的东西。
(function() {
"use strict";
var path = require('path');
var oldRequire = require;
require = function(module) {
var fixedModule = path.join.apply(path, module.split(/\/|\\/));
oldRequire(fixedModule);
}
})();
答案 3 :(得分:-1)
这是完整的根路径的两行代码,在Windows中(所有情况下,Windows 8为正斜杠,在我的情况下为Windows 8)只有path
节点模块:
var path = require('path');
root = path.resolve('./').replace(/\\/g, '/') + '/';
root
将向您显示您在其中调用以上path.resolve()
的文件的完整路径以及下面与参数(./)
匹配的任何路径。
replace
使用/\\/g
正则表达式替换\
结果中path.resolve()
的所有实例。
这很方便,因为使用path.resolve()
可以动态解析所需的路径。 replace()
是本机JS功能,无需加载其他任何内容。
@Megin:
只需做出global.__base = __dirname.replace(/\\/g, '/') + '/';
,然后发出相同的require
语句即可。