2012-01-20 2 views
5

Я пишу свой первый модуль на nodejs. Мне нужно разобрать мой сайт из кеша google. Post - это таблица таблицы. Когда я пытаюсь использовать этот модуль у меня есть эта ошибка: «Ошибка типа: Не удается установить свойство„прототип“неопределенных»? Как исправить эту ошибку Это мой код:Как использовать прототип в node.js

module.exports = function Post(documentDOM,options) 
{ 
    this.opts = $.extend({id:0,author_id:0},options); 
    this.doc = documentDOM; 
    this.post = { 
     id: 0, 
     name: '', 
     alt_name: '', 
     notice: '', 
     content: '', 
     author: '', 
     author_id: 0, 
    }; 
} 

module.exports.Post.prototype = { 
    init: function() { 
     this.post.id = this.opts.id; 
     this.post.author_id = this.opts.author_id; 
    }, 

    content: function() { 
     content = this.doc.find('.fullnews-content').html(); 
     if(!content.length) 
      content = doc.find('.article-content').html(); 
     return content; 
    } 
} 

Спасибо.

ответ

6
module.exports = function Post((documentDOM,options) 

Я думаю, что вы имели в виду

module.exports.Post = function((documentDOM,options) 

А затем получить доступ к нему, как этот

var Post = require('./post.js').Post; 

С первых вы делаете exports сама имени функции, чтобы изменить его вам будет использовать module.exports.prototype.

Соответствующие учебные материалы: http://kangax.github.com/nfe/

+0

module.exports.Post = функция Post (documentDOM, опции) {...} и module.exports.Post.prototype = {...} - Это все в посте. JS. Затем в app.js var Post = require ('./ post.js'); var post = new Post ({}, {}); И thay throw me error: Object.CALL_NON_FUNCTION_AS_CONSTRUCTOR (native) –

+2

@ v.tsurka: 'var Post = require ('./ post.js'). Post; var post = new Post ({}, {}); 'Поскольку функция теперь находится в свойстве' .Post' экспорта, вам нужно получить к нему доступ через это свойство. –

+0

большое спасибо всем работало отлично! –

Смежные вопросы