2016-11-12 2 views
0

私はウェブホスト上のサーバーをAWS上で稼働させ、express.jsの他のものはすべて取得しましたが、エラー:ここ(NodeJS + Express)サーバーがHTMLからリンクされたjavascriptファイルを読み取っていません

[email protected](censored):/home/ubuntu/(censored)# /home/ubuntu/(censored)/routes/index.js:15 
$(document).ready(function() { 
^

ReferenceError: document is not defined 
    at Object.<anonymous> (/home/ubuntu/(censored)/routes/index.js:15:3) 
    at Module._compile (module.js:570:32) 
    at Object.Module._extensions..js (module.js:579:10) 
    at Module.load (module.js:487:32) 
    at tryModuleLoad (module.js:446:12) 
    at Function.Module._load (module.js:438:3) 
    at Module.require (module.js:497:17) 
    at require (internal/module.js:20:19) 
    at Object.<anonymous> (/home/ubuntu/ForbiddenGround/app.js:12:14) 
    at Module._compile (module.js:570:32) 
    at Object.Module._extensions..js (module.js:579:10) 
    at Module.load (module.js:487:32) 
    at tryModuleLoad (module.js:446:12) 
    at Function.Module._load (module.js:438:3) 
    at Module.runMain (module.js:604:10) 
    at run (bootstrap_node.js:394:7) 
^C 

とは、jQueryの(?それは私が$変数を定義するにjQueryが含まれていることを知っているはずはありません)

<link rel="stylesheet" href="styles.css"> 
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"></link> 
<link href="owl-carousel/owl.carousel.css" rel="stylesheet"> 
<link href="owl-carousel/owl.theme.css" rel="stylesheet"> 
<link rel="stylesheet" href="css/style.css"> 
<link href="css/bootstrap-datetimepicker.min.css" rel="stylesheet" media="screen"> 
<link rel="stylesheet" href="font-awesome-4.4.0/css/font-awesome.min.css" type="text/css"> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 
<script type="text/javascript" src="scripts.js"></script> 

をロードしている私のHTMLファイルであり、これは、私があります発射しているapp.js:

var express = require('express'); 
var app = express(); 
var path = require('path'); 
var logger = require('morgan'); 
var cookieParser = require('cookie-parser'); 
var bodyParser = require('body-parser'); 
var favicon = require('serve-favicon'); 
var cons = require('consolidate'); 
const port = 9000; 
var swig = require('swig'); 

var routes = require('./routes/index'); 
var users = require('./routes/users'); 

var app = express(); 


app.engine('html', swig.renderFile); 

app.use(express.static('public')); 
app.use(express.static('forbiddenDirectory')); 
app.set('view engine', 'html'); 
app.set('views', __dirname + '/views'); 




//////////////////////////////////////////////////////////////////////////////////// 
app.get('/', function (err, req, res) { 
    req.render('index'); 
}); 


    app.listen(port); 
console.log(`Server started! Port: ${port}`); 

これは私のindex.jsです:

var express = require('express'); 
var router = express.Router(); 

/* GET home page. */ 
router.get('/', function(req, res, next) { 
    res.render('index', { joo }); 
}); 

module.exports = router; 


// Navbars 
$(document).ready(function() { 
    const apod = $("#apod").attr("href","apod.html"); 
    const home = $("#home").attr("href","home.html"); 
    const animedb = $("#animedb").attr("href","animedb.html"); 
    const birthdays = $("#birthdays").attr("href","birthdays.html"); 
    const holidays = $("#holidays").attr("href","holidays.html"); 
    const events = $("#events").attr("href","events.html"); 
    const contacts = $("#contacts").attr("href","contacts.html"); 
    $("#importantdates").click(function(e) { 
     e.preventDefault(); 
    }); 

}); 
+0

ここで問題を再現できますか:http://www.hyperdev.com – skav

+0

ここにindex.jsを投稿できますか? – ppovoski

+0

私はindex.jsを最後に掲載しました。そしてはい。私はちょっと混乱していますが、そのウェブサイトの使い方はわかりません。 – Chris

答えて

2

あなたのルートの1つにjQueryの+ DOMのものを使用しているように見えます。

ルートはNode.JSコンテキストで実行され、DOMにアクセスできないルートです。そのコード(つまり、$(document).ready(function(){ ... });)をブラウザに含まれるJSファイルに移動する必要があります。

編集:これを追加するだけで、const apod = $("#apod").attr("href","apod.html");はナビゲーションリンクにhref属性を設定する効果的な方法ではありません。これらのリンクが発生するテンプレートを変更し、そこでhref属性を設定する必要があります。

+0

ありがとうございます。そのため、app.jsファイルはルーティング専用に使用されていますか?または、そこにjavascriptコードが含まれていると同様に効果的なことがあります。さて、私はそれらのJavaScriptのリンクを削除します。以前は明示的に作業していなかったので、私はそれを持っていたので、私が作業していたすべてがhtmlファイルだったので、リンクを動的にリンクする方法を細かくしなければならなかった。 – Chris

+0

'app.js'はあなたが走っているNode.JSアプリケーションです。この場合、Expressを使用しますが、別のものにすることもできます。ここで重要な部分は、Node.JSで実行される部分とブラウザで実行される部分の違いを知ることです。私は、[Expressの "静的ファイル"のヘルプページ](https://expressjs.com/en/starter/static-files.html)が読むのに役立つかもしれないと信じています。 – Dymos

関連する問題