2017-03-25 11 views
0

したがって、私はmySQLでnode.jsを使用しています。私がサーバーを起動すると、すべてが正常ですが、127.0.0.1:3000にアクセスすると、res.sendFile()は定義されていません。私は、インデックスhtmlファイルをサーバーからの応答として送信したいが、それは動作しません。何が問題ですか?node.js - > res.sendFile()が定義されていません

var app = require('express')(); 
var mysql = require('mysql'); 
var bodyParser = require('body-parser'); 
var db = mysql.createConnection({ 
    host : "127.0.0.1", 
    user : "root", 
    password : "", 
    database : "user_data", 
    port : 3306 
}); 

db.connect(); 

app.get('/',function(req, res){ 
    res.sendFile(__dirname+'/index.html'); 
}); 
app.listen(3000); 
+0

try res.json( 'hello');あなたが見るものを教えてください。 – Remario

+0

"hello"を参照してください:) – Caitiff

+0

expressのバージョンは? – max

答えて

0

バージョンによっては、その機能(機能)がプロビジョニングされていません。

パッケージをサニタイズするには、まずのバージョンを4.15.2に変更し、node_modulesフォルダを削除します。次にnpm install

静的ファイルの配信を有効にする必要があります。

app.use(express.static('public')) 

次に単語の後にres.reder( 'index');を使用できます。 ビューエンジンを最初に設定する必要がありますが、これ以上の情報はありません。

app.render(ビュー)

コールバック関数を介して、ビューのレンダリングされたHTMLを返します。ビューのローカル変数を含むオブジェクトであるオプションのパラメータを受け入れます。 res.render()と似ていますが、クライアントにレンダリングビューを送信することはできません。あなたのビューエンジンはこれを辿るセットアップするに

// set the view engine to ejs 
app.set('view engine', 'ejs'); 
+0

@ 4castleのように最新バージョンのexpressを提供する絶対パス – Remario

+0

を試してください。sendFileはバージョン4からのみサポートされています – Remario

+0

静的ファイルも使用してください。 – Remario

0

それは静的なファイルだと仮定すると、あなたもちょうど行うことができます。

app.use('/', express.static(__dirname + '/../public')); 
//public being the folder containing your index.html. 

//Example of Path; 
//__dirname + '/../public' 
__dirname = start in same folder as server.js. 
/../ = go one folder back (in this case, to ROOT. 
/public = enter the "public" folder, this is where our index.html is. 

ROOT 
    Server 
    server.js 
    Public 
    css 
    images 
    index.html 
    etc 
+0

/../ publicそれは働かない – Remario

+0

それは私のために去年の時間完全にうまく働いた。 が更新されました。 – user2267175

関連する問題