Ich habe bis jetzt zahlreiche Express/Angular Guides für Routing gefolgt, und in den Szenarien jeder Arbeit, und ich habe den Dreh raus, aber ich habe ein kleines Problem, wenn Ich versuche, die Route in eine andere JS-Datei zu integrieren.Express-Routing außerhalb von server.js Datei
Zum Beispiel habe ich dies in server.js, es wird funktionieren. Wenn ich es in "char.js" schreibe, wird es nicht funktionieren.
Ich verwende ein Paket, mit dem diese Funktionen Blizzard-Spieldaten abrufen können. Die Endpunkte arbeiten direkt, versuchen aber, die Funktionen inline zu arbeiten.
server.js - Die Datei, die npm mit
app.get('/Users', function(req, res){
return blizzard.wow.character(['profile'], { origin: 'us', realm: 'Myserver', name: 'Mycharname' })
.then(response => res.json(response.data))
öffnet Diese Funktion arbeiten - Wenn ich/Benutzer gehen, werde ich die Json Antwort.
Wenn ich es
Chars.js bewegen
const express = require('express');
const router = express.Router();
const account = require('../routes/account');
const wow = require('../routes/wow.js');
const sc2 = require('../routes/sc2');
const d3 = require('../routes/d3');
const blizzard = require('../config/blizzard.js');
/*
// Create a route for the 'Users' path
const char = router.get('Char', function(req, res){
return blizzard.wow.character(['profile'], { origin: 'us', realm: 'Myserv', name: 'Myname' })
.then(response => res.json(response.data))
});
*/
// Create a route for the 'Users' path
router.get('/', function(req, res) {
return blizzard.wow.character(['profile'], { origin: 'us', realm: 'Myrealm', name: 'Mychar' })
.then(response => res.json(response.data));
});
});
/*
// Create a route for the 'Users' path
const users = router.get('Users', function(req, res) {
return blizzard.wow.character(['profile'], { origin: 'us', realm: 'Myserv', name: 'Myname' })
.then(response => res.json(response.data));
});
*/
module.exports = router;
Es wird nicht länger funktionieren. Ich habe das -same- snipper, aber mit Unterschiedname für die Zeichenvariable in meinem Benutzersteuerpult, das 100% außerhalb dieser Funktion arbeitet.
Ich bin mir nicht sicher, was genau ich vermisse.
Entire Server.js
'use strict';
require('dotenv').config({ silent: true });
var express = require('express')
,http = require('http')
,path = require('path')
,app = express()
,fs = require('fs');
const router = express.Router();
const account = require('./routes/account');
const wow = require('./routes/wow');
const sc2 = require('./routes/sc2');
const d3 = require('./routes/d3');
const chars = require('./routes/chars.js');
const blizzard = require('./config/blizzard.js');
const port = process.env.PORT || 5000;
app.use('/account', account);
app.use('/wow', wow);
app.use('/sc2', sc2);
app.use('/d3', d3);
// Mount the 'Users' route to `/`
app.use(express.static('public'));
app.engine('html', require('ejs').renderFile);
app.set('view engine', 'html');
app.get('/', function (req, res) {
res.render('index');
});
app.use('/', chars);
app.listen(port,() => {
console.log(`Blizzard.js Example App listening on port ${port}!`);
});
lief ich dies vom Paketeigner und er erklärte den Code, den ich in Chars.js haben sollte funktionieren so fühle ich mich wie es ist etwas in Bezug auf meine Platzierung von Dateien oder Variablen. Ich habe console.log auf chars.js geschrieben und eine Antwort von server.js bekommen, also weiß ich, dass sie geladen wird.
Wenn ein zusätzliches Skript erforderlich ist, lassen Sie es mich wissen. Das könnte auch mein Problem sein, weil ich nur diese beiden Skripte modifiziert habe.
aktualisiert Code, um Änderungen
Added 'app.use ('/ chars.js', Zeichen);' Added 'App server.js.Verwenden Sie ('/', char); 'zu server.js Jetzt bekommen 'Router.use() erfordert Middleware. Ich werde nach neuen Fehlern suchen. – DNorthrup
1 Sie müssen Router-Instanz (in Chars.js) 2 Setup Route 3 exportieren erstellt Router 4 in Server.js sollten Sie es mit einem Pfad verbinden app.use ('/', Zeichen); wo 'const chars = erfordern ('./ routes/chars.js');' das sollte genug sein, entfernen 'app.use ('/ chars.js', Zeichen);' – Dmitriy
Danke für die Updates. Mir fehlt offensichtlich etwas. Ich habe meine Chars.js und Server.js aktualisiert - Würde es Ihnen etwas ausmachen, mir zu sagen, was ich falsch mache? (Ich habe in module.exports wie empfohlen empfohlen, basierend auf dem 'Middleware-Problem' – DNorthrup