2017-03-20 4 views
0

Ich habe zwei Klassen im selben Ordner namens controllers.js und utile.js. Utile.js ist eine Klasse von Clients. Dies ist utile.js:I Erhalte den Fehler "Pfad muss eine Zeichenfolge sein"

'use strict'; 

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

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

in meinem controllers.js Ich brauche diese Methode zu verwenden, so dass ich versuchen, diese Klasse importieren auf diese Weise:

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); 

Das Programm gibt es mir:

/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 

Jeder kann mir helfen?

+0

Können Sie Ihre require.config Hauptdatei einfügen? – ayxos

+0

@ayxos require.config ({ \t baseUrl: config.relative_path + "/ src/modules" \t waitSeconds: 7, \t urlArgs: "v =" + config [ 'cache-buster'], \t Pfade { \t \t 'Forum': '../client', \t \t 'admin': '../admin', \t \t 'Anbieter':' ../../vendor‘, \t \t "Plugins": "../../plugins" \t} }); – Picco

+0

Mein Ordner befindet sich nicht im Pfad "baseUrl"! Wie kann ich das ändern? – Picco

Antwort

0

Wenn Sie ein Modul erstellen, müssen Sie es zuerst mit dem Objekt module.exports exportieren, indem Sie Ihre Methode oder Ihr Objekt hinzufügen. Beispiel: module.exports= {method: myMethod} usw.

Wenn Sie ein Modul verwenden möchten, müssen Sie es mit require(path) anfordern, wobei Pfad ein relativer Pfad sein kann und eine Zeichenfolge sein muss. Also, wenn Sie Modul benötigen, können Sie für Beispiel verwenden var utile = require('./utile.js')

+0

Wenn ich meinen Code mit Ihrer Lösung corret wenn in den controllers.js die Methode aufgerufen: "utile_metodo = require (‘ ./ utile.js'); \t \t \t \t console.log (" PATH" + utile_metodo.getLimiteCaratterePost () "; Ich habe den Fehler:" define ist nicht definiert "in utile.js – Picco

+0

Versuchen Sie Export-Modul, indem Sie zu" module.exports "Ihr Objekt hinzufügen. – Oskar

+0

es gibt mir "das Modul ist nicht definiert" das Problem ist, dass diese utile.js einige Methoden, die ich von der Client-Seite verwenden. Aber ich muss einige Methoden in controllers.js verwenden, die sich im selben Ordner befinden. In der Client-Datei, die ich brauche "(['utile'], Funktion (utile) {}" und es funktioniert, aber wenn ich in meiner controllers.js das ist keine Client-Datei ist es nicht funktionieren! – Picco

Verwandte Themen