2014-09-30 38 views
0

我正在使用來自Semantics3的節點模塊。我的代碼位於名爲search.js的文件中,位於我的路由文件夾中。代碼如下所示。不知何故,我沒有正確地引用模塊,因爲我在sem3.categories.get_categories上收到了一個未定義的方法錯誤。然而,當我將它移動到app.js文件夾時,這個代碼也可以工作。我確定我正在錯誤地引用節點模塊嗎?如果是這樣,從app.js以外的文件引用模塊的正確方法是什麼?無法調用未定義的方法'get_categories'

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

只是檢查,你使用模塊之前運行「npm install semantics3-node」嗎? – FacePalm 2015-03-27 23:37:36

回答

0

此博客文章可以幫助 - http://www.bennadel.com/blog/2169-where-does-node-js-and-require-look-for-modules.htm

我沒有使用最近的節點,但它必須是與相對/絕對路徑。我認爲它正在'routes'子目錄中搜索一個node_modules文件夾。您可能必須定義從'routes'到node_modules sem3的特定相對目錄路徑。

代替

變種sem3 =要求( 'semantics3節點')(API_KEY,api_secret);

做類似

變種sem3 =需要('[插入相對路徑即../modules/lib/semantics3-node]')(api_key,api_secret。);

相關問題