Dan*_*scu 4 javascript node.js meteor
我知道如何从Meteor包中获取当前目录,但是如何获取项目中特定文件的路径?
节点__dirname,__filename并不在Meteor中工作.
这很复杂.
meteor run将项目文件复制到内部目录树中<project-dir>/.meteor/local/build,以非显而易见的方式重新组织它们(例如,原始树中的私有子目录成为assets子目录)并将其与各种npm模块混合以创建可以作为一个nodejs项目.实际上,为了避免重复,在.meteor目录中会自动设置一个.gitignore文件,告诉git,如果你用它进行版本控制,则不要复制.meteor/local目录.
在您更改文件时,将监视原始项目目录.然后将更改复制到当前项目构建目录中并重建项目.
如果部署到远程系统,则构建将复制到服务器然后运行.
process 通常是定义的全局服务器端对象,并根据node.js API工作,因为流星服务器代码最终在node.js中运行.
因此,您可以console.log(process.cwd());在服务器端运行以获取服务器进程的当前工作目录,通常类似于:
~/<meteor project directory>/.meteor/local/build/programs/server
Run Code Online (Sandbox Code Playgroud)
这表明当meteor run在本地完成时,原始项目文件存在../../../../../,但不使用它,因为它可能在将来发生变化.
相反,对于包含原始项目文件的目录,您可以使用:
baseDir = process.cwd().replace(/\/\.meteor.*$/, '');
Run Code Online (Sandbox Code Playgroud)
这将获取工作目录,并截断以...开头的所有内容 /.meteor
但是,这不适用于服务器部署,因为服务器上不需要原始项目树,只需要构建.不打算作为客户端或服务器代码的文件可能会卡在私有子目录中,正如我所提到的那样,它成为构建中的资产子目录.当前在构建中查找文件的方法是在本地运行中手动检查.meteor/local,或者使用调用或模仿gnu find的JS库.
既然你提到了包,我注意到在构建中,服务器端包代码最终会出现在:
~/<project-dir>/.meteor/local/build/programs/server/packages
Run Code Online (Sandbox Code Playgroud)
和客户方:
~/<project-dir>/.meteor/local/build/programs/web.browser/packages
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1238 次 |
| 最近记录: |