[英]Function is not defined error in nodejs. What's wrong with my code?
[英]How to insert npm uniqid modules in mysql database using nodejs. when i put on my code it display an error "TypeError: uniqid is not a function"
我正在將 nodejs 與 express 和 mysql 一起使用。 當我提交表單時,我發現一個錯誤“uniqid 不是函數”。
var express = require('express');
var router = express.Router();
var uniqid = require('uniqid');
var db = require('../db');
router.post('/create',function(req,res,next){
var full_name = req.body.fullname;
var email = req.body.email;
var password= req.body.password;
var mobile_no = req.body.mobile_no;
var uniqid = uniqid();
var insert_query = `INSERT INTO users (user_uid,full_name,email,mobile_no,password) VALUES ("${uniqid}","${full_name}","${email}","${mobile_no}","${password}") `;
db.query(insert_query,function(err,result){
if(err) throw err;
res.redirect('/signup');
});
});
module.exports = router;
您正在使用uniqid()
的值覆蓋uniqid
模塊
var uniqid = require('uniqid');
...
var uniqid = uniqid();
雖然它可能適用於第一次執行1 ,但后續調用將失敗並顯示錯誤“uniqid is not a function”
更改名稱並使用 es6 let/const
而不是var
const uniqid = require('uniqid');
...
const newId = uniqid();
const insert_query = `INSERT INTO ... VALUES ("${newId}"...) `;
1不是,請參閱下面的 Klaycon 評論
讓我們以這段代碼為例:
var foo = () => "test" function test() { var foo = foo() } test()
如您所見,它具有與您相同的錯誤。 這是因為您將局部變量命名為全局變量。
發生的事情就是所謂的提升。 當函數被執行時,它在設置任何值之前將foo
聲明為當前函數執行上下文的局部變量。
然后引擎嘗試用foo()
設置它的值,但當時foo
是一個局部變量,而不是全局變量,它的值是undefined
。
顯然, undefined
不是函數,因此會出現錯誤“foo 不是函數”。
tl;dr:命名變量時要小心(並使用let
/ const
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.