【问题标题】:locating path of a file in meteorjs在meteorjs中定位文件的路径
【发布时间】:2015-08-11 08:18:31
【问题描述】:

我在meteorjs中有一个项目正在使用节点文件系统来读取文件,但我无法找到要读取的文件。

我的文件位置

Server
    - startup
         - app.load.coffee
         - myfileToBeRead.txt

我在 app.load.coffee 中的尝试

fs = Npm.require('fs')
console.log fs.readFileSync 'server/startup/myfileToBeRead.txt'

我无法按照它的说明读取文件

Error: ENOENT, no such file or directory 'server/startup/myfileToBeRead.txt'

我认为由于流星将所有内容合并到一个 js 文件中,我必须添加文件的完整路径。 我也尝试过其他路径(使用完整路径,没有完整路径)。你能在这里指出正确的方向吗? 谢谢

【问题讨论】:

  • 您希望将myfileToBeRead.txt 签入您的存储库,还是必须独立于您的项目?
  • 我想把它签入repo,但是你能给我一个独立的解决方案和checked one吗?
  • 我现在对meteor中的文件管理系统感到很困惑。我什至无法写入任何文件。任何帮助都会很棒

标签: javascript node.js meteor coffeescript npm


【解决方案1】:

根据大卫的回答,我还发现我可以使用项目的 assets/app 目录来做到这一点。我所要做的就是将文件添加到名为 private 的目录中。这也将帮助我写入目录中的文件。

fs = Npm.require('fs')
console.log fs.readFileSync "assets/app/myfileToBeREad", 'utf8'

【讨论】:

  • 这应该在开发模式下工作,但是在你捆绑你的应用程序并部署它之后它是否工作?
  • 是的,我不必将文件放在私有目录中并使用资产/应用程序。我是流星新手,我一直忘记项目结构在部署后会被破坏。谢谢你。我改变了答案
【解决方案2】:

是否应签入文件

这是一个简单的案例 - 只需将文件放在您的 private 目录中并使用 assets api 访问它。有关更多示例,请参阅 my blog post 就该主题。

该文件是否应该存在于服务器上的其他位置

使用与您的项目无关的目录的绝对路径,例如/tmp/home/foo/bar。在捆绑和部署应用程序后,流星项目中的目录会变得混乱,因此不能指望它们的存在。如果您执行以下操作,则使用上面的示例应该可以工作:

var fs = Npm.require('fs');
fs.readFileSync('/tmp/myfileToBeRead.txt');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-29
    • 1970-01-01
    • 2018-12-15
    相关资源
    最近更新 更多