運用NodeJs環境並依賴第三方庫,框架等實現網站前后端分離報錯問題及處理方法


 運用NodeJs環境並依賴第三方庫,框架等實現網站前后端分離報錯問題及處理方法

問題一:

    SyntaxError: missing ) after argument list in .....\views\user\index.html while compiling ejs。

    語法錯誤:失去右括號)在參數列表后面,在.....\views\user\index.html(在這個路徑中的index.html)中當編譯ejs時。

    分析:這個時候應該是模板引擎ejs出現問題,但是ejs已經是一個寫好的模板庫,是沒有問題的,所以我們應該去替換的頁面查找問題。

    處理方法: 這個時候我們應該去inndex.html中查找問題,特別注意定界符<% %>中的內容,我們只要關注與index.html文件,這樣減小了排錯的范圍,理清思路就可以排除問題了。

問題二:

    Trying to open unclosed connection.

    嘗試去打開沒有關閉的連接。

    分析: 通過connection我們可以想到連接數據庫的操作mongoose.connect('mongodb://localhost/數據庫名稱');因此我們可能是多次使用了連接數據庫的操作(這是因為在routers文件夾下,每個JS文件都寫)或者在操作完成后我們並沒有關閉數據庫(方法一:mongoose.connection.close(); 等同於 db.close().  方法二:mongoose.disconnect();

    處理方法:  我們就連接一次數據庫,並不多次連接數據庫。在express自定義項目名稱下新建libs文件夾,在libs下新建model.js,內容如下
                var mongoose = require('mongoose');
                mongoose.connect('mongodb://localhost/數據庫名稱');
                exports.mongoose = mongoose;
            在routes文件夾下的JS文件,引入為
                var mongoose = require('../libs/model.js').mongoose; 然后再定義模型。

問題三:

    can't set headers after they are sent.

    發送后不能再設置頭部(個人理解是請求和響應中的頭部)

    寫express犯的錯,當初做項目的時候我的想法是響應頁面后,3秒跳轉到注冊頁,結果報錯,嘗試了很久我解決方法是去除一個res方法就好了),代碼如下

1 router.get('/jump',  function(req,  res){
2     //給用戶響應views目錄下的文件
3     res.render('user/jump', {success: req.flash('success').toString(), error: req.flash('error').toString() });
4     setTimeout(function() {
5         //重定向到users文件夾下的reg.html
6         res.redirect('/users/reg');
7     },3000);
8 });    

    處理辦法就是去除其中一個res方法就可以了,但是就達不到需求了,由於能力有限,目前還沒有解決這個需求問題。有參考到這篇博文,但是我的問題並不是因為NodeJs的異步方式產生的,特此記錄,以便以后可以避免這個問題。

   

    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM