私は羽を学んでいて、問題があります。PHP の switch と同様のファイル インクルードを試みます。
例えば:
/src/ミドルウェア/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());
};
ファイルを修正しました。私はあなたが書いているようにやっていると確信しましたが、残念ながら私には問題があります。http://127.0.0.1:3030/record.htmlを開くと、混合ファイルなしで record.html のみが取得されます。たとえば、record.html の record.html からパスを変更した場合
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());
});
このままでもいいのですが、URLにオリジナルパスを入れたいです。URL には、ファイル名のようなパスが必要です。次に、records.html の代わりに :file を追加すると、ファイルが存在しない場合、「Oh no!」というエラーが発生します。代わりに 404。
例えば:
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());
});
そして、まだ1つの質問。
const path = require('path')
const filename = path.join(__dirname, '..', '..', 'public')
app.js ファイルが const パスの場合、パブリック ディレクトリからファイルを提供する場合、ミドルウェアやサービスなどの各ファイルに上記のコードを配置する必要がありますか? このアプリのすべてのファイルに対してグローバル変数を使用することはできませんか?
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) http://127.0.0.1:3030/record.htmlなどのファイル名のパスを持つ混合ファイルを含むページを表示するにはどうすればよいですか?
2) app.get() で :file を使用する場合、ファイルが存在しないときにエラー 404 を表示するにはどうすればよいですか?
3) ファイルまたは混合ファイルを提供する各ファイルで const パスを使用する必要がありますか?