在节点应用程序和客户端JavaScript之间共享configuration

我需要在节点应用程序和浏览器中都有一些configuration对象。 这里是configuration的path和内容:

path:[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: {} 

我究竟做错了什么?

你的isBrowservariables被分配了一个函数,但是它永远不会被执行。

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

代码应该是

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

isBrowser是这里的一个函数。 由于在你的版本!isBrowser总是返回false所以module.exports = config永远不会执行。

如果阻塞则更换

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

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