2016-11-23 4 views
0

Ich lerne ein Federn und ich habe ein Problem. Ich versuche Dateieinbindung ähnlich wie PHP zu machen.Wie fügt man eine Datei in index.html mit feathers.js ein?

Zum Beispiel:

/src/middleware/index.js

'use strict'; 

const handler = require('feathers-errors/handler'); 
const notFound = require('./not-found-handler'); 
const logger = require('./logger'); 
const cheerio = require('cheerio') 
const fs = require('fs'); 

const path = require('path') 
const filename = path.join(__dirname, '..', '..', 'public') 

module.exports = function() { 
    // Add your custom middleware here. Remember, that 
    // just like Express the order matters, so error 
    // handling middleware should go last. 

const app = this; 

app.get('/record.html', function(req, res) { 

    var html = fs.readFileSync(filename + '/index.html'); 
    var home = fs.readFileSync(filename + '/record.html'); 
    var $ = cheerio.load(html); 
    $('#content').html(home); 
    res.send($.html()); 
}); 

    app.use(notFound()); 
    app.use(logger(app)); 
    app.use(handler()); 
}; 

korrigierte ich meine Datei. Ich habe dafür gesorgt, dass ich so wie du schreibe, und leider habe ich ein Problem. Wenn ich http://127.0.0.1:3030/record.html öffne bekomme ich nur record.html ohne gemischte Dateien. Wenn ich den Pfad von record.html zu records.html z.

app.get('/records.html', function(req, res) { 

    var html = fs.readFileSync(filename + '/index.html'); 
    var home = fs.readFileSync(filename + '/record.html'); 
    var $ = cheerio.load(html); 
    $('#content').html(home); 
    res.send($.html()); 
}); 

Auf diese Weise ist OK, aber ich möchte ursprünglichen Pfad in URL haben. Eine URL muss einen Pfad wie den Dateinamen haben. Im Gegenzug, wenn ich hinzufügen: Datei statt records.html für den Fall, wenn die Datei nicht existiert, bekomme ich Fehler "Oh nein!" statt 404.

zum Beispiel:

app.get('/:file.html', function(req, res) { 

    var file = req.params.file 

    var html = fs.readFileSync(filename + '/index.html'); 
    var home = fs.readFileSync(filename + '/' + file + '.html'); 
    var $ = cheerio.load(html); 
    $('#content').html(home); 
    res.send($.html()); 
}); 

Und noch eine Frage.

const path = require('path') 
const filename = path.join(__dirname, '..', '..', 'public') 

Wenn in app.js Datei const Pfad ist, muß ich über Code in jeder Datei wie Middleware oder in Betrieb genommen, wenn ich Datei aus dem öffentlichen Verzeichnis dienen will? Ich kann keine globale Variable für alle Dateien in dieser App verwenden?

app.js

'use strict'; 

const path = require('path');       <-- HERE const path 
const serveStatic = require('feathers').static; 
const favicon = require('serve-favicon'); 
const compress = require('compression'); 
const cors = require('cors'); 
const feathers = require('feathers'); 
const configuration = require('feathers-configuration'); 
const hooks = require('feathers-hooks'); 
const rest = require('feathers-rest'); 
const bodyParser = require('body-parser'); 
const socketio = require('feathers-socketio'); 
const middleware = require('./middleware'); 
const services = require('./services'); 

const app = feathers(); 

app.configure(configuration(path.join(__dirname, '..'))); 

app.use(compress()) 
    .options('*', cors()) 
    .use(cors()) 
    .use(favicon(path.join(app.get('public'), 'favicon.ico'))) 
    .use('/', serveStatic(app.get('public'))) 
    .use(bodyParser.json()) 
    .use(bodyParser.urlencoded({ extended: true })) 
    .configure(hooks()) 
    .configure(rest()) 
    .configure(socketio()) 
    .configure(services) 
    .configure(middleware); 

module.exports = app; 

1) Wie kann ich die Seite mit gemischter Datei mit dem Pfad des Dateinamen anzeigen kann z http://127.0.0.1:3030/record.html

2) Wenn ich: Datei in app.get() wie Fehler 404 zeigen, wenn eine Datei nicht existiert?

3) Muss ich const Pfad in jeder Datei verwenden, in der ich eine Datei oder gemischte Dateien bereitstellen möchte?

Antwort

0

Es gibt keinen Grund, die nicht in den Federn funktionieren würde, aber in einer dynamisch erzeugten Anwendung, die Sie sicher machen, dass - gerade in Express wie - Sie Ihre Middleware vor die Fehlerbehandlung enthalten (zB in middleware/index.jshere sonst werden Sie immer bekomme eine 404.

+0

Super! Jetzt klappt es, danke :-) – SeaDog

+0

Ich habe noch eine Frage. Wenn ich app.get() zu index.js in/src/middleware hinzugefügt habe, wie kann ich eine Datei aus/public directory hinzufügen? – SeaDog

+0

In dieser Datei mit 'const path = require ('Pfad')' und 'const Dateiname = Pfad.join (__ Verzeichnisname, '..', '..', 'public', 'index.html')' – Daff

Verwandte Themen