[英]angularjs TypeError: require(…) is not a function , nodejs run error
[英]NodeJs : TypeError: require(...) is not a function
我正在嘗試需要一個文件,然后將其傳遞給 var。 我正在按照本教程創建一個身份驗證系統。 在編寫 server.js 文件並嘗試編譯后,我遇到了 BSON 錯誤,因此我在 mongoose 中更改了需要發布版本的行。
這是我的代碼和錯誤:
服務器.js
require('./app/routes')(app, passport);
錯誤
require('./app/routes')(app, passport);
^
TypeError: require(...) is not a function
at Object.<anonymous> (d:\Node JS learning\WorkWarV2\server.js:38:24)
at Module._compile (module.js:434:26)
at Object.Module._extensions..js (module.js:452:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Function.Module.runMain (module.js:475:10)
at startup (node.js:117:18)
at node.js:951:3
Process finished with exit code 1
我讀到這通常意味着requireJS
沒有正確加載,但我不知道為什么或如何修復它。
由於評論而編輯:
正如所問,這是console.log(require);
的結果
我認為,這意味着module.exports
在./app/routes
模塊沒有分配是一個函數等於是require('./app/routes')
不能解決的功能,所以因此,你不能把它作為一個像這樣的功能require('./app/routes')(app, passport)
。
如果您希望我們對此進行進一步評論,請向我們展示./app/routes
。
它應該看起來像這樣;
module.exports = function(app, passport) {
// code here
}
您正在導出一個函數,然后可以像require('./app/routes')(app, passport)
一樣調用該函數。
可能發生類似錯誤的另一個原因是,如果您有一個循環模塊依賴關系,其中模塊 A 嘗試require(B)
而模塊 B 嘗試require(A)
。 當這種情況發生時,它會被require()
子系統檢測到,其中一個將返回為null
,因此嘗試將其作為函數調用將不起作用。 在這種情況下,解決方法是消除循環依賴,通常是將公共代碼分解為第三個模塊,這兩個模塊都可以單獨加載,盡管修復循環依賴的細節對於每種情況都是獨一無二的。
對我來說,當我執行立即調用函數時,我需要放置;
在require()
的末尾。
錯誤:
const fs = require('fs')
(() => {
console.log('wow')
})()
好的:
const fs = require('fs');
(() => {
console.log('wow')
})()
對我來說,在分支之間切換時我遇到了類似的錯誤 - 一個使用了@google-cloud/datastore
包的較新(“typescriptish”)版本,它返回帶有 Datastore 構造函數的對象作為導出對象的屬性之一,我切換到另一個分支任務,那里使用了較舊的數據存儲版本,它將數據存儲構造函數“直接”導出為module.exports
值。 我收到錯誤是因為 node_modules 仍然有我切換的分支使用的較新模塊。
記得導出你的routes.js
。
在routes.js
,在這個函數模塊中編寫你的路由和所有代碼:
exports = function(app, passport) {
/* write here your code */
}
只需在需要文件的地方包裝 Arrow 函數
我也遇到過這樣的事情。 在您的路由文件中,將函數導出為這樣的對象:
module.exports = {
hbd: handlebar
}
並且在您的應用程序文件中,您可以通過 .hbd 訪問該功能,並且沒有 ptoblem ....!
在我的情況下,當我將 S 放入 module.exportS 時,我會修復,
前:
module.export = () => {}
后:
module.exports = () => {}
我不知道如何,但在可能的情況下,當我改變時它會得到修復
require('./routes')(app)
到
require('./routes')
在我的情況下,當我把 ( ; ) 放在最后時,我會修復它。
前:
const got = require('got')
后:
const got = require('got');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.