我知道怎么做从 Meteor 包中获取当前目录,但是如何获取项目中特定文件的路径呢?
node's __dirname
and __filename
在流星中不起作用。
这很复杂。
meteor run
将您的项目文件复制到内部的目录树中<project-dir>/.meteor/local/build
,以非显而易见的方式重新组织它们(例如,原始树中的私有子目录成为资产子目录)并将其与各种npm模块混合以创建可以作为nodejs项目执行的包。事实上,为了避免重复,在 .meteor 目录中自动设置了一个 .gitignore 文件,它告诉 git,如果你用它进行版本控制,不要复制 .meteor/local 目录。
如果您更改文件,则会监视原始项目目录。然后,更改将被复制到当前项目构建目录中并重新构建项目。
如果部署到远程系统,构建将被复制到服务器然后运行。
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.*$/, '');
这将获取工作目录,并截断以/.meteor
不过,这不适用于服务器部署,因为服务器上不需要原始项目树,只需要构建。不打算成为客户端或服务器代码的文件可能会被困在私有子目录中,正如我提到的,它成为构建中的资产子目录。当前在构建中查找文件的方法是在本地运行中手动检查 .meteor/local,或者使用调用或模仿 gnu find 的 JS 库。
既然你提到了packages,我注意到在构建中,服务器端包代码最终以:
~/<project-dir>/.meteor/local/build/programs/server/packages
和客户端:
~/<project-dir>/.meteor/local/build/programs/web.browser/packages
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)