前提・実現したいこと
node.js初心者です。
local:8080にアクセスがあったら、ソースコードのあるディレクトリ内の.jsか.htmlのファイル一覧を表示する。
という機能を実装したいのですが、node.jsで関数の結果がundifinedになってしまうようです。
原因がわからず困っております。
※タスク
1.カレントディレクトリの末尾が.jsか.htmlのファイルを取得する関数をモジュールとして別ファイルに作成
2.function.js内の関数をmain.jsから引数を渡して実行
3.結果をmain.jsのdataに入れる
4.Vueでテンプレに表示
該当のソースコード
main.js
1const Vue = require('vue') 2const server = require('express')() 3const renderer = require('vue-server-renderer').createRenderer() 4const list = require("./function.js"); 5 6server.get('*', (req, res) => { 7 var test = list("./"); 8 const app = new Vue({ 9 data: { 10 url: req.url, 11 items: test 12 }, 13 template: require('fs').readFileSync('./template.html', 'utf-8') 14}) 15 16 renderer.renderToString(app, (err, html) => { 17 res.send(html) 18 }) 19}); 20server.listen(8080)
function.js
1const fs = require('fs'); 2console.log('module load!'); 3 4//ファイル一覧取得関数 5var readdir = function (dir) { 6 fs.readdir(dir, function (err, files) { 7 if (err) { 8 throw err; 9 } 10 files.filter( function( value ) { 11 //特定の拡張子を含むものだけ抽出 12 return value.match( /.js$|.html$/g ); 13 }) 14 }); 15} 16module.exports = readdir;
試したこと
1.テンプレにはdataの値が入っていれば表示される(ベタ書きでテストしました)
2.function.js自体は動いている(module.exportせずにfunctins.jsだけで実行しテストしました)
3.main.js側のconsole.logで関数の結果がundefinedと表示される。
補足情報(FW/ツールのバージョンなど)
bash-3.2$ node -v v9.5.0

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/06/17 13:31
2018/06/17 13:54
2018/06/17 14:42 編集