gpt4 book ai didi

javascript - 如何获取 Meteor 包中文件的路径?

转载 作者:搜寻专家 更新时间:2023-10-31 23:09:19 25 4
gpt4 key购买 nike

我知道如何 get the current directory from a Meteor package ,但是如何获取项目中特定文件的路径?

Node 的 __dirname__filename 在 Meteor 中不起作用。

最佳答案

这很复杂。

  1. meteor run将项目文件复制到目录树中 <project-dir>/.meteor/local/build ,以不明显的方式重组它们(例如,原始树中的私有(private)子目录变为 Assets 子目录)并将其与各种 npm 模块混合以创建可以作为 nodejs 项目执行的包。事实上,为了避免重复,在 .meteor 目录中自动设置了一个 .gitignore 文件,它告诉 git,如果你将它用于版本控制,不要复制 .meteor/local 目录。

  2. 原始项目目录会受到监视,以防您更改文件。然后将更改复制到当前项目构建目录并重建项目。

  3. 如果您部署到远程系统,构建将被复制到服务器然后运行。

process 通常是定义的全局服务器端对象,并根据node.js API 工作,因为 meteor 服务器代码最终运行在node.js 中。

所以你可以运行console.log(process.cwd());在你的服务器端获取服务器进程的当前工作目录,通常是这样的:

~/<meteor project directory>/.meteor/local/build/programs/server

这表明当meteor run在本地完成,原始项目文件在 ../../../../../ 中,但不要使用它,因为它将来可能会改变。

相反,对于包含原始项目文件的目录,您可以使用:

baseDir = process.cwd().replace(/\/\.meteor.*$/, '');

这将获取工作目录,并 chop 以 /.meteor 开头的所有内容

但这不适用于服务器部署,因为服务器上不需要原始项目树,只需要构建。不打算成为客户端或服务器代码的文件可能会卡在私有(private)子目录中,正如我提到的那样,它成为构建中的 Assets 子目录。当前在构建中查找文件的方法是在本地运行中手动检查 .meteor/local,或者使用调用或模仿 gnu find 的 JS 库。

既然你提到了,我注意到在构建中,服务器端包代码最终以:

~/<project-dir>/.meteor/local/build/programs/server/packages

和客户端:

~/<project-dir>/.meteor/local/build/programs/web.browser/packages

关于javascript - 如何获取 Meteor 包中文件的路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27435797/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com