似乎无法通过kraken.js获得静态路由

时间:2014-12-15 06:08:35

标签: express static-files kraken.js

我正在尝试升级现有的快递站点以使用kraken.js

我的动态页面加载正常(到目前为止),但我似乎无法提供静态文件。

查看示例页面,看起来很简单,我只需要添加

"middleware": {
    "static": {
        "arguments": [ "path: ./client" ]
    }
}

在我的config.json文件中。我正在尝试提供的文件是./client/build/js/bundle.js,我可以确认该文件存在于该文件夹中。它不在./public文件夹中。

我需要做些什么来让kraken(或kraken.js static-serve)找到我的静态文件?

我已将文件放在./public/client/build/js/bundle.js中,并且kraken在该位置找到该文件没有问题。

2 个答案:

答案 0 :(得分:0)

我认为您可能缺少中间件对象的“模块”成员。我目前的Kraken生成的静态中间件配置对象如下所示:

"static": {
    "module": {
        "arguments": [ "path:./.build" ]
    }
}

好的,我发现了如何让它发挥作用。请注意您的配置中“公共”不在哪里?这意味着它正在预先设置或在其他地方配置。其他地方在/node-modules/kraken-js/config/config.json中。我修改它看起来像这样:

"static": {
    "enabled": true,
    "priority": 40,
    "module": {
        "name": "serve-static",
            "arguments": [ "path:./public", "path:./client" ]
    }
},

然后在你的常规/config/config.json中我编辑了静态对象,如下所示:

"static": {
    "module": {
        "arguments": [ "path:./.build", "path:./build" ]
    }
},

请注意,在第二个参数中没有“。”在构建之前。

最后,我在主布局中使用了这样的脚本标记:

<script src="/js/test.js"></script>

因此,从您的根项目目录中我有/client/build/js/test.js和test.js正确加载。

此外,还有一种方法可以做到更容易,并且不需要在海妖源中进行捣乱。在主index.js文件中,您可以这样做:

app = module.exports = express();
app.use(kraken(options));
app.use(express.static('client'));  // Add this line

答案 1 :(得分:0)

几天,然后几周,然后几个月过去了,没有任何效果。 我应该注意到我没有使用Yoeman,我们在工作中使用gulp,这可能是问题的一部分。

解决方案原来是

"middleware": { "static": { "route": "/public" },

与kraken的任何文档看起来都非常不同。希望这有助于某人。