Node.js SailsJS如何在项目的根级别指定文件路径

Node.js SailsJS如何在项目的根级别指定文件路径,node.js,sails.js,Node.js,Sails.js,我得到了一个SailsJS应用程序,其中我需要引用位于项目根目录下的htpasswd文件: var auth = require('http-auth'); var basic = auth.basic({ authRealm: "Admin Panel", authFile: 'htpasswd', // <-- how do I specify the path to this file ? authType: 'basic' }); module.expo

我得到了一个SailsJS应用程序,其中我需要引用位于项目根目录下的htpasswd文件:

var auth = require('http-auth');

var basic = auth.basic({
    authRealm: "Admin Panel",
    authFile: 'htpasswd', // <-- how do I specify the path to this file ?
    authType: 'basic'
});

module.exports = function(req, res, next) {
    basic.apply(req, res, function(username) {
        if(!username) {
            return res.serverError(403, 'You are not authorized');
        }

        next();
    })(req, res);
}
以及:

authFile: '~/htpasswd'
两者都不起作用

更新 嗯……似乎不是代码有错误,不知怎的,我的Sailsjs应用程序找不到htpasswd模块

我确实做到了:

sudo npm install -g htpasswd
我还使用htpasswd命令行生成
htpasswd
文件…我的项目设置有问题

我的控制台错误显示:

Error: Cannot find module 'htpasswd'
at Function.Module._resolveFilename (module.js:336:15)
    at Function.Module._load (module.js:278:25)
    at Module.require (module.js:365:17)
    at require (module.js:384:17)
    at Object.<anonymous> (/Users/MacUser/SailsProjects/SecurePanel/node_modules/http-auth/gensrc/auth/basic.js:11:14)
错误:找不到模块“htpasswd”
在Function.Module.\u解析文件名(Module.js:336:15)
在Function.Module.\u加载(Module.js:278:25)
at Module.require(Module.js:365:17)
根据需要(module.js:384:17)
反对。(/Users/MacUser/saisprojects/SecurePanel/node_modules/http auth/gensrc/auth/basic.js:11:14)

使用本机
\uuu dirname
变量,该变量的计算结果为当前文件的路径

查看它在使用什么
console.log(\uu dirname)
。然后你可以做:

var basic = auth.basic({
    realm: "Admin Panel",
    file: __dirname + "/path_from_current_file_to/htpasswd"
});
因此,如果根目录是此脚本所在文件夹的上一个文件夹,则可以执行以下操作:


\uu dirname+“/../htpasswd”

是否无法快速跳转到Nodejs中文件夹的根目录?似乎很奇怪,必须键入
。/../../../../../../../../../../../../../../code>你知道我的意思吗DBy文件夹的根,是指文件系统吗?还是项目?因为我以为你指的是后者?不,除非你存储对根的引用,否则Node.js无法确定根项目文件夹是什么。您应该将其存储在环境变量或其他东西中,然后访问它。更好的是,配置文件。我指的是项目根,而不是Mac的文件系统。也许我应该用Passport的基本身份来代替。
var basic = auth.basic({
    realm: "Admin Panel",
    file: __dirname + "/path_from_current_file_to/htpasswd"
});