是否有比process.cwd()
确定正在运行的node.js进程的根目录更好的方法?类似Rails.root
,但适用于Node.js。我正在寻找尽可能可预测和可靠的东西。
从运行的node.js应用程序确定项目根目录
它对我有用
process.env.PWD
只需使用:
path.resolve("./") ... output is your project root directory
这样可以:
path.join(...process.argv[1].split(/\/|\\/).slice(0, -1))
如果您想从正在运行的node.js应用程序确定项目根目录,则也可以。
process.mainModule.path
上有一个INIT_CWD
属性process.env
。这就是我目前在我的项目中使用的东西。
const {INIT_CWD} = process.env; // process.env.INIT_CWD
const paths = require(`${INIT_CWD}/config/paths`);
祝好运...
也许您可以尝试从向上遍历,__filename
直到找到package.json
,然后确定这是当前文件所属的主目录。
只需将此行添加到root中的模块中,通常就是app.js
global.__basedir = __dirname;
然后,_basedir将可用于所有模块。
1-在项目根目录中创建一个文件,将其称为settings.js
2-在此文件内添加此代码
module.exports = {
POST_MAX_SIZE : 40 , //MB
UPLOAD_MAX_FILE_SIZE: 40, //MB
PROJECT_DIR : __dirname
};
3-在node_modules内部创建一个名为“ settings”的新模块,并在模块index.js内部编写以下代码:
module.exports = require("../../settings");
4-以及您希望项目目录仅使用的任何时间
var settings = require("settings");
settings.PROJECT_DIR;
这样,您将拥有与此文件相关的所有项目目录;)
__dirname
不是全球性的 它是当前模块的本地文件,因此每个文件都有其自己的本地不同值。
如果要运行的进程的根目录,可能要使用process.cwd()
。
如果需要可预测性和可靠性,则可能需要使您的应用程序要求设置某个环境变量。您的应用程序会查找MY_APP_HOME
(或其他)内容,如果存在,并且该应用程序存在于该目录中,则一切正常。如果未定义或目录不包含您的应用程序,则它应退出并出现错误提示用户创建变量。可以将其设置为安装过程的一部分。
您可以使用诸如此类读取节点中的环境变量process.env.MY_ENV_VARIABLE
。