2017-09-16 63 views
1

爲什麼下面的代碼無法正常工作需要的NodeJS不起作用

const {express} = require('express'); 

const router = express.Router(); 

未解決的函數或方法路由器

但這項工作

const express = require('express'); 

,如果我想要做到這一點需要,我該怎麼辦..兩種方法之一要求

const {validationResult, check} = require('express-validator/check'); 

節點-v // V8.3.0

我試圖用這個.. https://github.com/ctavan/express-validator#usage

+0

因爲它的解構賦值 – Li357

回答

4

爲什麼下面的代碼無法正常工作

常量{}表達=要求( '表示');

const router = express.Router();

您正在使用destructuring來提取不存在的屬性。您的代碼有效地這樣做:

const temp = require('express'); 
const express = temp.express; 

通過require('express')返回的對象有幾個屬性,但.express是不是其中之一,所以你最終明確設置爲undefined。然後當你調用express.Router()時,你會得到錯誤。

您的代碼工作只是保存整個對象,然後使用正確的屬性名稱訪問它。你可以把這些代碼,或者,如果你知道你只有感興趣的路由器,你可以這樣做:

const {Router} = require('express'); 
const router = Router(); 

這將是幾乎一樣:

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

,如果我想要做這個需求,我該怎麼做..兩種方法之一要求

const {validationResult,check} = require('express-validator/check');

我不熟悉庫導出的內容。如果您知道該對象同時具有validationResultcheck,並且這些是您唯一關心的事情,那麼您的代碼看起來很好。

+0

非常好的解釋。 – jfriend00