2017-07-26 5 views
0

I Express bin mit etwas Routing zu tun, und ich will von signup.js eine Funktion innerhalb einer statischen JavaScript-Datei nennen, aber ich erhalte eine FehlermeldungExpress: Kann Modul nicht finden?

Error: Cannot find module './js/list.js' 

Meine Verzeichnisstruktur sagen will, ist wie folgt:

app.js 
-routes/signup.js 
-public/js/list.js 

In meiner app.js Datei, ich habe diese Zeile:

app.use(express.static(path.join(__dirname, 'public'))); 

In meinem signup.js, ich habe:

var listModel = require('./js/list.js'); 

Meine list.js Datei enthält:

module.exports.list = function (userName, category) { 
    return ({ 
    "owner" : userNameName, 
    "category" : category, 
    "completed" : [], 
    "planned" : [], 
    "current" : [], 
    "dropped" : [], 
    "onHold" : [] 
    }); 
} 

Gibt es etwas, was ich in Ordnung bin fehlt die Listenfunktion in meine Anmeldungen Datei zu importieren? Vielen Dank!

+1

Es sieht für mich aus 'routes/signup.js' aus, dass Sie 'require (' ../ public/js/list.js) benötigen;' –

+0

Oh wow, danke, das hat funktioniert! –

Antwort

0

Da sie unterschiedlich sind und Liste verschiedene übergeordnete Verzeichnisse haben, wird die NodeJS Funktion nicht als Geschwister betrachten. So müssen Sie

var listModel = require('../public/js/list.js'); 

innerhalb von routes/signup.js

schreiben Wenn Sie public/test.js eine Datei hat man in der Tat

var listModel = require('./js/list.js'); 

zu verlangen, um die Abhängigkeit von innen könnte es benutzen.

+0

Das hat funktioniert, danke! –

0

Das erfordert Modulpfad sein sollte:

var listModel = require('../public/js/list'); // it is fine to have the file extension 
0

In Ihrem Fall, da signup.js in einem anderen Ordner als list.js ist, können Sie den vollständigen Pfad, um es zu geben haben.

var listModel = require('../public/js/list.js');

app.use(express.static(path.join(__dirname, 'public'))); bedeutet, dass, wenn Sie zu localhost gehen (oder was auch immer Route die App auf gehostet wird) haben Sie Zugriff auf diesen Ordner haben. Das heißt, wenn Sie zu localhost:3000/js/list.js gehen, haben Sie Zugriff auf den Ordner.

Verwandte Themen