【问题标题】:Sails.js - How to change a node.js module used by sails?Sails.js - 如何更改sails 使用的node.js 模块?
【发布时间】:2014-08-22 16:30:07
【问题描述】:

我想编写自己的 ejs-locals 节点模块,但我也希望sails 使用我的并且我不想更改sails packages.json

如何加载,在sails 加载了它的ejs-locals 模块之后,我自己的模块来覆盖它?

如果有合适的方法来做这种事情,我想知道:) 谢谢。

我试图在官方文档中找到答案:http://sailsjs.org/#/documentation/concepts/extending-sails

但没有什么。


编辑:

我尝试在config/views.js 中使用fn 属性,但它没有按预期工作,我在这里做了一个示例:https://github.com/Vadorequest/sails-custom-ejs-locals


最终编辑:

它适用于作为接受答案提出的解决方案,只需确保禁用 layout 否则它会弄乱您的配置。 layout: false

【问题讨论】:

    标签: node.js sails.js


    【解决方案1】:

    正确的配置是:

    view: {
        engine: {
           ext: 'ejs',
           fn: yourfunction
       },
       // need to disabe sails.js default partials feature for dont auto load sails ejs-locals
       partial: false
    }
    

    【讨论】:

    【解决方案2】:

    尝试在 config/views.js 文件中配置你的视图引擎。

    ...
    
    ext : 'ejs',
    fn: require('ejs-locals')
    
    ...
    

    【讨论】:

    • 这是使用sails 0.9?我相信它是0.10。也许我需要先升级才能尝试。
    • 我用一个 .hbs 引擎和sails 0.10 测试了这个配置,但我不知道是否适用于sails 0.9 视图配置逻辑在:github.com/balderdashy/sails/blob/master/lib/hooks/views/…
    • 0.9 中似乎没有任何效果,我尝试fn: "test" 触发错误并且它有效,所以我猜这是0.10 中的新功能。谢谢提示。
    • 它似乎不起作用,如果它起作用我不知道如何检查它。
    • 不行,sails 还在用自己的ejs-locals。一个临时的解决方案是用我自己替换node_modules/sails/node_modules/ejs-locals,它工作正常。我只是一点也不喜欢。
    【解决方案3】:

    你可以使用 npm shrinkwrap。 https://docs.npmjs.com/cli/shrinkwrap

    然后编辑npm-shrinkwrap.json 并在sails 部分中,将ejs 或ejs-lorals 指向您的版本

    【讨论】:

      猜你喜欢
      • 2015-09-24
      • 2016-05-12
      • 2014-01-01
      • 1970-01-01
      • 2014-07-17
      • 2016-05-14
      • 1970-01-01
      • 1970-01-01
      • 2017-12-08
      相关资源
      最近更新 更多