在节点应用程序和客户端javascript之间共享配置

时间:2017-11-14 09:16:02

标签: javascript node.js

我需要在节点应用程序和浏览器中都有一些配置对象。以下是配置的路径和内容:

路径:[app] /public/js/config.js
含量:

var config = {
    "foo": "bar",
    "num": 42,
    "list": ["a","b","f"]
};
var isBrowser=new Function("try {return this===window;}catch(e){ return false;}");
if(!isBrowser) {
    module.exports = config;
}

在我的html中,我只需添加一个脚本元素,它可以正常工作:

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

在节点应用程序中,我似乎没有导入对象,我得到一个空对象:

var config = require('./public/js/config.js');
console.log('config:', config); // gives config: {}

我做错了什么?

3 个答案:

答案 0 :(得分:3)

isBrowser变量分配了一个函数,但它永远不会被执行。

因此它不会执行任何环境检测。

答案 1 :(得分:1)

代码应该是

if(!isBrowser()) {
    module.exports = config;
}

isBrowser是此处的功能。由于您的版本!isBrowser始终返回false,因此永远不会执行module.exports = config

答案 2 :(得分:1)

替换if block

if(!isBrowser) {
    module.exports = config;
}

if(!isBrowser()) {//this isBrowser() function
    module.exports = config;
}