エクスプレスでクライアントファイルがルート機能をどのように見つけているかを把握していました。マイアプリの構造は、クライアント側のHTMLは/public/files
である打撃、のようになり、そのようExpressでのルートパスの使用方法は?
|-root
|--public
|---files
|---scripts
|---css
|--views
...
です。 http://localhost:3000/files/like_animal.html
に正しくレンダリングできます。
<html>
<body>
<form action="/handleForm" method="post">
name: <input name="usename"><br>
I like <input name="animal"><br>
<input type="submit" value="Go">
</form>
</body>
</html>
ザ・JSファイルは
var express = require('express');
var app = express();
var path = require('path');
app.use(express.static(path.join(__dirname + 'public')));
console.log('start');
var bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({ extended: true }));
app.use('/handleForm', (req, res) => {
var name = req.body.name;
var animal = req.body.animal;
console.log(name + " " + animal);
res.send('Thank you');
});
app.listen(3000, () => {
console.log('Listening on port 3000');
});
は、今私は、私はこれは私が
/public/files
でさえも、
/public/scripts
または
root
でそれを入れてみました。で、ファイルをJS置くべき場所を確認していない、というようなものです。しかし、何も動作しません。フォームを送信するたびに、ブラウザは常に
Cannot POST /handleForm
と表示されます。明示的に1週間の初心者として、私は完全に失われています。どんなヒントも高く評価されます。どうもありがとう。
「path.join」を使用していますが、「path.join」を使用して結合を行っていません。 :)それは 'path.join(__ dirname、 'public')' ..そして@faresoftのように、通常はPOSTリクエストに 'use'を使用しないと言っていますが、app.postが良いでしょう。 – Keith
私は、すべてのルータ機能を、ノードサービスの開始に使用されている同じファイルの下に置くべきであることを理解しています。私はこの概念を正しく理解しましたか? –