除了process.cwd()之外,是否有其他方法来获取当前项目根目录的路径名。Node是否实现了ruby的属性Rails.root之类的东西。我要找的是稳定可靠的东西。
当前回答
在主文件的顶部添加:
mainDir = __dirname;
然后在你需要的任何文件中使用它:
console.log('mainDir ' + mainDir);
mainDir是全局定义的,如果你只需要在当前文件中使用它-使用__dirname代替。 主文件通常在项目的根文件夹中,并命名为Main .js, index.js, gulpfile.js。
其他回答
尝试path._makeLong(“some_filename_on_root.js”);
例子:
cons path = require('path');
console.log(path._makeLong('some_filename_on_root.js');
这将返回你的节点应用程序的根目录的完整路径(与package.json相同的位置)
你可以简单地在express app变量中添加根目录路径,并从app中获取这个路径。在index.js或app.js文件中。并使用req.app.get('rootDirectory')在代码中获取根目录路径。
__dirname不是全局变量;它是当前模块的局部值,因此每个文件都有自己的局部值,不同的值。
如果您想要运行进程的根目录,则可能需要使用process.cwd()。
如果希望获得可预测性和可靠性,那么可能需要将设置某个环境变量作为应用程序的要求。你的应用程序寻找MY_APP_HOME(或任何东西),如果它在那里,应用程序存在于该目录,那么一切都很好。如果它是未定义的,或者目录不包含您的应用程序,那么它应该退出,并提示用户创建变量。可以将其设置为安装过程的一部分。
您可以使用process.env.MY_ENV_VARIABLE来读取节点中的环境变量。
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;
通过这种方式,您将拥有与此文件相关的所有项目目录;)
就像在根目录中添加这一行到你的模块一样简单,通常是app.js或app.ts。
global.__basedir = __dirname;
然后所有模块都可以访问_basedir。
注意:对于typescript实现,遵循上面的步骤,然后你将能够使用global.__basedir使用根目录路径
推荐文章
- 在用nodejs和express创建的REST API中设置响应状态和JSON内容的正确方法
- 如何获得请求路径与表达请求对象
- 节点和错误:EMFILE,打开的文件太多
- 没有定义Electron require()
- 在摩卡测试时调用异步函数如何避免超时错误:超时超过2000ms
- package.json中属性“private”的目的是什么?
- 用套接字发送消息到指定客户端。IO和node.js
- 当我运行' npm install '时,它返回' ERR!代码EINTEGRITY ' (npm 5.3.0)
- 我如何使用Node.js Crypto创建HMAC-SHA1哈希?
- 如何在package.json中使用“main”参数?
- NPM清洁模块
- 在Node.js中加载基本HTML
- Node.js和CPU密集型请求
- 为什么在节点REPL中没有定义__dirname ?
- 在Node.js中克隆对象