Javascript node.js/backbone.js应用程序加载配置文件设置

Javascript node.js/backbone.js应用程序加载配置文件设置,javascript,node.js,backbone.js,sails.js,Javascript,Node.js,Backbone.js,Sails.js,我有一个节点/主干/sails项目,需要加载特定于部署的配置文件 因此,在应用程序的sails部分,我可以在 myapp/config/mysettings.js 并引用它sails.config.mysettings.foo。这正如预期的那样有效 但在应用程序的主干部分,我一辈子都不知道如何引用同一个文件(…为简洁起见,这些文件都是剪报) 在控制台中生成未定义的消息。像这样引用应用程序范围的设置文件的正确方法是什么?我已经看过了,但找不到任何东西,这让我觉得这是非常明显的,或者我的问题措辞错误

我有一个节点/主干/sails项目,需要加载特定于部署的配置文件

因此,在应用程序的sails部分,我可以在 myapp/config/mysettings.js

并引用它sails.config.mysettings.foo。这正如预期的那样有效

但在应用程序的主干部分,我一辈子都不知道如何引用同一个文件(…为简洁起见,这些文件都是剪报)


在控制台中生成未定义的消息。像这样引用应用程序范围的设置文件的正确方法是什么?我已经看过了,但找不到任何东西,这让我觉得这是非常明显的,或者我的问题措辞错误。

Sails不会让您的配置文件公开浏览。那太糟糕了

在这里,我可以想到几个选项:

  • 资产文件夹中创建一个指向配置文件的符号链接。这里棘手的部分是符号链接将按原样复制到.tmp/public文件夹中,因此如果在符号链接中使用相对路径,则它需要是从.tmp/publicconfig/mysettings.js的相对路径。或者您可以在符号链接中使用绝对路径
  • 使用
    fs
    ,创建一个仅流式传输文件的自定义路由:

    require('fs')
    .createReadStream(sails.config.paths.config+"/mysettings.js")
    .pipe(res);
    
    尽管您确实应该使用
    path
    模块来确定文件路径,并将整个过程包装在
    try/catch
    中,以防万一

  • 使用策略为每个请求在局部变量中添加配置设置,例如:

    module.exports = function myConfigPolicy(req, res, next) {
        res.locals.mysettings = sails.config.mysettings;
        return next();
    }
    
    在您的视图/layout.ejs中执行以下操作:

    <script type="text/javascript">
        var mySettings = <%= JSON.stringify(mysettings) %>;
    </script>
    
    
    var mySettings=;
    
    根据您选择的模板引擎进行调整。当然,这并不使用AMD在运行时加载配置,因此如果这是一个问题,那么选择1或2

  • <script type="text/javascript">
        var mySettings = <%= JSON.stringify(mysettings) %>;
    </script>