我正在使用Semantics3中的节点模块。我的代码位于名为search.js的文件中,该文件位于我的routes文件夹中。代码如下所示。不知怎的,我没有正确引用模块,因为我在sem3.categories.get_categories上遇到了一个未定义的方法错误。但是当我将它移动到app.js文件夹时,同样的代码可以正常工作。我是否正确地确定我错误地引用了节点模块?如果是这样,从app.js以外的文件引用模块的正确方法是什么?
var express = require('express');
var router = express.Router();
var api_key = 'my key';
var api_secret = 'my secret';
var sem3 = require('semantics3-node')(api_key,api_secret);
/* GET search results. */
router.get('/', function(req, res) {
// Build the query
sem3.products.categories_field( "cat_id", 4992 );
// Make the query
sem3.categories.get_categories(
function(err, categories) {
if (err) {
console.log("Couldn't execute query: get_categories");
return;
}
// View the results of the query
console.log( "Results of query:\n" + JSON.stringify( categories ) );
res.send(JSON.stringify(categories));
}
);
});
module.exports = router;
答案 0 :(得分:0)
此博客文章可能有所帮助 - http://www.bennadel.com/blog/2169-where-does-node-js-and-require-look-for-modules.htm
我最近没有使用过Node,但它必须与相对/绝对路径有关。我认为它正在'routes'子目录中搜索node_modules文件夹。您可能必须定义从“routes”到node_modules sem3的特定相对目录路径。
而不是
var sem3 = require('semantics3-node')(api_key,api_secret);
执行类似
的操作var sem3 = require('[插入相对路径即... / modules / lib / semantics3-node]')(api_key,api_secret);