我的目录结构如下:
app/
server/
api/
user/
controller.js
images/
image1.jpeg
问题是在controller.js中读取image1.jpeg时我必须使用像
这样的字符串var imagePath = __dirname + '/../../../images/images1.jpeg';
fs.readFile(imagePath, ()....
现在上面的作品很精细。但是我不喜欢的是这个字符串' /../../../'
有没有更好的方法来访问images /文件夹中的文件?
答案 0 :(得分:1)
没有将app/images
的路径传递给控制器,这与你能做的一样好。
您可以遍历module.parent
引用,直到module.parent
未设置,如果您可以安全地假设您的主脚本在哪里。例如,如果您的主脚本在app.js
内app/
,则可以执行以下操作:
var path = require('path');
var topLevel = module;
while (topLevel.parent)
topLevel = topLevel.parent;
topLevel = path.dirname(topLevel.filename);
var imagesBasePath = path.join(topLevel, 'images');
// ...
fs.readFile(path.join(imagesBasePath, 'images1.jpeg'), ...);
答案 1 :(得分:1)
您可以使用public static Quaternion transform(Quaternion q) {
Quaternion a = new Quaternion(Vector3.Y, 90).multiply(q);
Quaternion b = new Quaternion(a.w, a.y, -a.x, -a.z);
return b.multiply(new Quaternion(Vector3.Y, 90));
}
。您可能希望将这些保存为常量,但您可以执行以下操作以使事物更具可读性。
将路径作为第一个参数传递到当前目录,并从同一个父目录(在本例中为app)传递到图像本身的路径,它将返回从当前目录到图像的相对路径。
path.relative
答案 2 :(得分:0)
我使用名为node-app-root-path
的npm模块来帮助我管理NodeJS应用程序中的路径。
请参阅: https://github.com/inxilpro/node-app-root-path
要获取应用程序的根路径,您可以执行require('app-root-path')
;
示例:强>
global.appRoot = require('app-root-path');
var imagePath = global.appRoot.resolve('server/images');
var img1 = imagePath + '/image1.jpeg';
fs.readFile(img1, ()....
不确定是否是一个好主意但是在这种情况下我将appRoot存储为全局变量,这样它就可以在我的NodeJS应用程序堆栈中的任何地方使用,甚至可以用于我的其他一些NodeJs库
在他们的文档中还有许多其他用法,看看它是否对你有帮助。