express.jsで静的ファイルをexpress.static()で読み込むのに手こずった話
結論からいうとnode実行ディレクトリからのパスを渡さないと読み込めなかった。
TypeScriptを使ってるので、こんな構成なんです。
app
–server.ts
dist
–server.js
–webapp
—-index.html
—-main.js
package.json
tsconfig.json
npm start
で./app/server.tsをコンパイルして、./dist配下に配置。
最後にnode ./dist/server.js
を実行してます。
server.js
はこんな感じ。
//erver.ts import * as express from "express"; const app = express() app.use("/", express.static('webapp')); app.get('/', function(req, res) { res.sendFile('./webapp/index.html', { root: __dirname }); }); app.listen(3000, function() { console.log('Example app listening on port 3000!') })
はじめ、server.ts
をこんな感じで書いてたら、http://localhost:3000
は読めるのだが、http://localhost:3000/main.js
が読めなかった。
結局、こう書き直したら読み込めるようになりましたとさ。
app.use("/", express.static('./dist/webapp'));
server.js
から見たらmain.js
って./webapp/main.jsだと思うのだが。。。
色々まじってるけど、参考までにリポジトリはこちら。
本日のおすそ分けでした。