在我server.js文件,我有以下需要加載和JS文件之前顯示HTML文件,express.static不提供HTML文件
var path = require('path');
var express = require('express');
var app = express();
var htmlRoutes = require('./app/routing/routes.js')(app, path, express);
在我route.js
module.exports = function(app, path, express){
app.use(express.static(__dirname + '/../public'));
//also tried doing
//app.use('/', express.static(__dirname + '/../public'));
app.listen(10003, function(){
console.log('connected on 10003')
})
}
我不知道爲什麼我一直在瀏覽器上收到'無法獲取/'信息。我的目錄佈局如下
dir main
-server.js
dir subMain
dir routing
-routes.js
dir public
-home.html
-list.html
我所試圖做的是,當我運行「節點server.js」,我想加載和routes.js文件之前顯示home.html的頁面。這是因爲我需要加載文檔,以便我可以使用jquery選擇器'$'並在home.html中選擇一個按鈕類,併爲其指定一個單擊事件,以便對'/ list'進行AJAX調用以顯示list.html 。
我也想這樣做
module.exports = function(app, path, express){
app.use(express.static(__dirname + '/../..'));
app.use(function(request, response, next){
response.sendFile(path.resolve(__dirname + '/../public/home.html'));
})
app.listen(10003, function(){
console.log('connected on 10003')
})
}
但我得到以下錯誤
Uncaught SyntaxError: Unexpected token <
我使用的express.static
module.exports = function(app, path, express){
//loading the directory with the home.html
app.use(express.static(path.join(__dirname + '..', 'public')));
//loading directory with server.js by going up two level, from routing directory -> app -> main (has server.js)
app.use(express.static(path.join(__dirname + '..', '..')))
app.listen(10003, function(){
console.log('connected on 10003')
})
}
//Edit, added jquery event handler for button click on home.html
$(document).on('click', '.btn', sendSurvery);
function sendSurvery(){
var myQueryUrl = "http://localhost:10003/survey";
$.ajax({url: myQueryUrl, method: 'GET'}).done(function(response){
});
}
多行文本也試過,但我仍然得到消息不能GET /。我需要首先顯示home.html,以便在那裏加載jquery庫,所以我可以選擇按鈕併發送survey.html點擊事件 我忘記了我的目錄public和routing在子文件夾中,名爲subMain
我需要使用'app.use'來提供html文件。用你這樣做的方式,我不能擺脫第1行,只使用app.get? app.use在第一行上做了什麼? – henhen
@Anonymous我改變了我的代碼以更好地匹配你的代碼。至於我的第一行代碼https://expressjs.com/en/starter/static-files.html –
如果你把你的route.js代碼放到你的服務器上,我會得到一個修改後的代碼 – henhen