Nodejs窗口中的绝对路径,带正斜杠

Meg*_*ikh 20 windows absolute-path node.js webpack

我可以在nodejs的窗口中使用正斜杠的绝对路径吗?我使用的是这样的东西:

global.__base = __dirname + '/';
var Article = require(__base + 'app/models/article');
Run Code Online (Sandbox Code Playgroud)

但是在Windows上,构建失败了,因为它需要类似的东西C:\Something\Something/apps/models/article.我使用webpack.那么如何规避这个问题以便要求保持不变__base + 'app/models/src'呢?

Vik*_*sal 32

我知道回答有点晚,但我认为我的回答会对一些访客有所帮助.

Node.js你可以很容易地通过只使用让您的当前正在运行的文件的名称和它的目录__filename__dirname变量分别.

为了根据您的系统校正正斜杠和反斜杠,您可以使用path模块Node.js

var path = require('path');
Run Code Online (Sandbox Code Playgroud)

像这里是一个混乱的路径,如果我想在我的服务器上使用它,我希望它是正确的.path模块在这里为您完成一切

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

var correctedPath = path.normalize(randomPath); //that's that

console.log(correctedPath);
Run Code Online (Sandbox Code Playgroud)
desktop/my folder/myfile.txt
Run Code Online (Sandbox Code Playgroud)

如果您想要文件的绝对路径,那么您也可以使用模块的resolve功能path

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

console.log(resolvedPath);
Run Code Online (Sandbox Code Playgroud)
/Users/vikasbansal/Desktop/temp/img.jpg
Run Code Online (Sandbox Code Playgroud)

  • 这根本行不通。反斜杠仍然是反斜杠。 (21认同)
  • @VikasBansat:`path.normalize(path.resolve('./'))` - 实际上是您建议的方式。然而,这并不能解决 Windows 8 下的问题(至少)。 (3认同)
  • 这仅适用于 UNIX 系统。对于 Windows,默认路径分隔符是反斜杠 (2认同)
  • 经测试,该方法在windows下不起作用。斜线仍然保持向后。这个答案不应该被接受,因为它没有解决 Windows 的问题,而这是所要求的。 (2认同)

ape*_*pet 15

现在是 2020 年,距问题发布还有 5 年,但我希望我的回答对某人有用。我使用了替换方法,这是我的代码(express js 项目):

const viewPath = (path.join(__dirname, '../views/')).replace(/\\/g, '/')

exports.articlesList = function(req, res) {
    res.sendFile(viewPath + 'articlesList.html');
} 
Run Code Online (Sandbox Code Playgroud)