2017-03-20 1 views
0

J'ai deux classes dans le même dossier appelé controllers.js et utile.js. Utile.js est une classe d'utily client. Ceci est utile.js:I Obtenir l'erreur "Le chemin doit être une chaîne"

'use strict'; 

define('utile', [], function() { 
    var modulo = {}; 

modulo.getLimiteCaratterePost = function() { 
     var limite_carattari_post = 25; 
     return limite_carattari_post; 
    }; 
return modulo; 
}); 

dans mes controllers.js je dois utiliser cette méthode, donc j'essaie d'importer cette classe ainsi:

async.waterfall([ 
      function(next){ 
       //the error start from the above line 
       require(['utile'], function (utile) { 
        console.log("uitle dentro "+JSON.stringify(utile_metodo.getLimiteCaratterePost())); 
        return next(); 
       }); 

      }, 
      function(next) { 
       console.log("GET LIMITE CARATTER "+JSON.stringify(utile_metodo.getLimiteCaratterePost())); 
       db.getObject(hash + ":bookmark:" + id_bookmark, next); 
      }, 
...... (continue the problem is the import); 

Le programme donne-moi:

/bookmark/5/aaa 
AssertionError: path must be a string 
    at Module.require (module.js:496:3) 
    at require (internal/module.js:20:19) 
    at /vagrant/nodebb/node_modules/nodebb-plugin-connect-bookmarked/lib/controllers.js:34:5 

Quelqu'un peut-il m'aider?

+0

Pouvez-vous coller votre fichier principal require.config? – ayxos

+0

@ayxos require.config ({ \t baseUrl: config.relative_path + "/ src/modules", \t WaitSeconds: 7, \t urlArgs: "v =" + config [ 'cache-briseur'], \t chemins : { \t \t 'forum': '../client', \t \t 'admin': '../admin', \t \t 'fournisseur':' ../../vendor », \t \t 'plugins': '../../plugins' \t} }); – Picco

+0

Mon dossier ne se trouve pas dans le chemin "baseUrl"! Comment puis-je modifier cela? – Picco

Répondre

0

Au début, lorsque vous créez un module, vous devez l'exporter en utilisant l'objet module.exports en y ajoutant votre méthode ou objet. Par exemple module.exports= {method: myMethod} et ainsi de suite

Ensuite, si vous voulez utiliser le module, vous devez l'utiliser en utilisant require(path) où chemin peut être un chemin relatif, et doit être une chaîne. Donc, si vous voulez un module, vous pouvez utiliser par exemple var utile = require('./utile.js')

+0

Si je CORRET mon code avec votre solution quand dans les controllers.js appelé la méthode: "utile_metodo = require (» ./ utile.js'); \t \t \t \t console.log (" PATH" + utile_metodo.getLimiteCaratterePost ()); "Je otbain l'erreur:" définir n'est pas défini "dans utile.js – Picco

+0

Essayez le module d'exportation, en ajoutant à' module.exports' votre objet. – Oskar

+0

il me donne "le module n'est pas défini" le problème est que ce utile.js a quelques méthodes que j'utilise du coté client. Mais j'ai besoin d'utiliser des méthodes dans controllers.js qui se trouve dans le même dossier. Dans le fichier client, je fais "require (['utile"], function (utile) {} "et ça marche mais quand je fais dans controllers.js ce n'est pas un fichier client ça ne marche pas! – Picco