在节点应用程序和客户端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: {}
我究竟做错了什么?
你的isBrowser
variables被分配了一个函数,但是它永远不会被执行。
因此它不执行任何环境检测。
代码应该是
if(!isBrowser()) { module.exports = config; }
isBrowser
是这里的一个函数。 由于在你的版本!isBrowser
总是返回false
所以module.exports = config
永远不会执行。
如果阻塞则更换
if(!isBrowser) { module.exports = config; }
至
if(!isBrowser()) {//this isBrowser() function module.exports = config; }