【问题标题】:NodeJS fs module does not work in OpenshiftNodeJS fs 模块在 Openshift 中不起作用
【发布时间】:2015-12-14 16:08:23
【问题描述】:

我在 Openshift 上将这个模块用于我的应用程序,但是当它需要执行检查 Data 文件夹中是否存在文件的函数时出现错误:

DEBUG: /var/lib/openshift/02A50df2XXYD46273d00FFG8/app-root/runtime/repo/server.js:164
        fs.exists('$OPENSHIFT_HOMEDIR/app-root/data/' + user_ip, function(exis
           ^

DEBUG: TypeError: Object #<Object> has no method 'exists'

我在服务器代码中有 require fs,它在 package.json 的依赖项中

编辑:已解决

使用require('path')path.exists() 效果很好。

【问题讨论】:

    标签: node.js openshift fs


    【解决方案1】:

    fs.exists() 已被弃用。而是使用 path.exists()。 有关路径的更多信息,请参阅节点核心 path 模块。

    【讨论】:

    • 我尝试使用 path.exists 但是当函数执行时它返回下一个错误: path.exists('$OPENSHIFT_HOMEDIR/app-root/data/' + user_ip, function(exists) DEBUG: ReferenceError: 路径未定义
    【解决方案2】:

    建议:
    根据 API 文档http://nodejs.org/api/fs.html#fs_fs_exists_path_callback

    fs.exists() 是不合时宜的,仅出于历史原因而存在。几乎不应该有理由在您自己的代码中使用它。

    特别是,在打开文件之前检查文件是否存在是一种反模式,这会使您容易受到竞争条件的影响:另一个进程可能会在调用 fs.exists() 和 fs.open() 之间删除文件。只需打开文件并在错误不存在时处理它。

    至于你的问题: 您可以拨打其他 fs 电话吗?

    【讨论】:

    • 那么如果我是你,我会坚持使用 fs.open,因为它似乎是一个更好的选择。
    猜你喜欢
    • 1970-01-01
    • 2021-08-22
    • 2021-05-04
    • 2013-02-19
    • 2012-03-26
    • 1970-01-01
    • 1970-01-01
    • 2018-11-12
    • 1970-01-01
    相关资源
    最近更新 更多