我在尝试使用NodeJS从文件加载以下javascript对象时遇到了麻烦:
{
queries:{
user:"SELECT * FROM users WHERE $1 = ?"
},
user:function(identifier){
return this.queries.user.replace('$1', "user_"+identifier);
}
}
使用require函数:
var queries = require('./components/queries');
我在第4行遇到解析错误,意外','在查询结束大括号之后。
我不确定这个对象有什么问题,因为我可以毫不费力地在chrome控制台中声明它,所以我敢打赌这个问题与我在主脚本中包含这段代码的方式有关。但我不知道如何正确地包括它。
感谢您的帮助!
答案 0 :(得分:1)
在commonJS中,您应该使用exports
对象来设置对模块变量的访问权。
exports.queries = {
queries:{
user:"SELECT * FROM users WHERE $1 = ?"
},
user:function(identifier){
return this.queries.user.replace('$1', "user_"+identifier);
}
}
然后像这样添加:
var q_mod = require('./components/queries');
var queries = q_mod.queries;
//logs "SELECT * FROM users WHERE $1 = ?"
console.log(queries.queries.user);
答案 1 :(得分:-1)
你有3种方法可以做你想做的事:
将文件的扩展名更改为.json
将内容导出为node.js模块:
module.exports = /* the object */
读取并解析为json文件:
fs.readFile('path/to/file', function (content) {
var queries = JSON.parse(content.toString());
});