2016-06-13 8 views
0

私はウェブサイトを書くためにexpressを使用します。エラー:__dirnameを使用しているENOENT

core 
    server.js 
public 
    add.html 

しかし、私は、私はこのエラーを取得http://localhost:9000/addに行くことにしようとしています:

エラー:ENOENTを、STATこれはserver.js

app.use(express.static('public')); 
app.get('/add', function (req, res) { 
res.sendFile(__dirname + "/" + "add.htm");}) 

マイプロジェクト構造では私のコードです'... \ Project \ REST \ core \ add.html' atエラー(ネイティブ)

なぜコアフォルダにadd.htmlがありますか?

+0

パスが相対的である(__ dirnameは+ "/" + "add.htm") '毎回あなたのファイルを公開ディレクトリに入れて、のようにアクセスしてください。' res.sendFile( "add.htm") ' –

+0

これで、絶対に絶対パスでなければならないか、res.sendFileにrootを指定する必要があります。 – DzouSi

+0

http://expressjs.com/en/starter/static-files.html –

答えて

0

Why does it looking for add.html in core folder?

__dirnameは、それを使用してJSファイル(それはは、現在の作業ディレクトリを反映するものではありません)のディレクトリを反映しているため。

ファイルがcore/server.jsの場合、__dirnameFULL-PATH-TO/core/です。

server.jsに対するadd.htmlへのパスは、このです:あなたは `res.sendFileを言及する必要はありませんので

__dirname + "/../public/add.html" 
+1

私のパスを変更しようとしましたが、今私はこのエラーがあります: "ForbiddenError:Forbidden" – DzouSi

+0

Windowsを使用している場合、そのスラッシュを逆にする必要があります: '__dirname +" \\ .. \\ public \\ add .html "。 – robertklep

+0

私は 'app.get( '/'、function(req、res){ res.sendFile(__ dirname +"/"+" index.html "); })のように機能します。そうすべき。しかし、/ addのためには全く動作しません。 – DzouSi

関連する問題