NodeJs : TypeError : require(...)가 함수가 아닙니다.
저는 파일을 요구하고 나서 var에 전달하려고 합니다.저는 인증 시스템을 만들기 위해 이 자습서를 따르고 있습니다.server.js 파일을 작성하고 컴파일을 시도한 후 BSON 오류가 발생하여 mongoose에서 릴리스 버전이 필요한 라인을 변경했습니다.
여기 제 코드와 오류가 있습니다.
server.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);
저는 '바로 호출' 기능을 할 때는;
종반에require()
.
오류:
const fs = require('fs')
(() => {
console.log('wow')
})()
좋아요:
const fs = require('fs');
(() => {
console.log('wow')
})()
제 생각에 이건.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
따라서 그것을 함수로 부르려고 하는 것은 효과가 없을 것입니다.이 경우 해결 방법은 순환 종속성을 제거하는 것입니다. 순환 종속성을 해결하는 세부 사항은 상황마다 고유하지만, 일반적으로 공통 코드를 세 번째 모듈로 분할하여 둘 다 개별적으로 로드할 수 있습니다.
저에게 이 문제는 주기적인 의존성의 문제였습니다.
IOW, 모듈 A 필요 모듈 B, 모듈 B 필요 모듈 A.
그래서 모듈 B에서,require('./A')
는 함수가 아닌 빈 개체입니다.
다음 항목을 내보내는 것을 기억하십시오.routes.js
.
인routes.js
, 이 기능 모듈에 사용자의 경로와 코드를 모두 적습니다.
exports = function(app, passport) {
/* write here your code */
}
저의 경우 지점 간에 전환할 때 비슷한 오류가 발생했습니다. 하나는 더 새로운 버전("typescriptish")을 사용했습니다.@google-cloud/datastore
내보낸 개체의 속성 중 하나로 데이터스토어 생성자가 있는 개체를 반환하는 패키지와 작업을 위해 다른 분기로 전환했는데, 데이터스토어 생성자를 "직접" 내보내는 이전 데이터스토어 버전이 사용되었습니다.module.exports
가 fromvalue에서 있어서 했습니다. node_modules에 전환한 브랜치에서 사용하는 새 모듈이 여전히 있어서 오류가 발생했습니다.
저도 이런 일을 당한 적이 있습니다.routes 파일에서 함수를 다음과 같은 개체로 내보냅니다.
module.exports = {
hbd: handlebar
}
그리고 당신의 앱 파일에서는 .jpd에 의해서 그 기능에 접근할 수 있고 문제가 없습니다..!
어떻게 된 건지 모르겠지만 혹시 제가 바뀌었을 때 고쳐졌을 수도 있습니다.
require('./routes')(app)
로.
require('./routes')
제 경우에는 모듈에 S를 넣을 때 수정합니다.exportS,
이전:
module.export = () => {}
이후:
module.exports = () => {}
언급URL : https://stackoverflow.com/questions/33007878/nodejs-typeerror-require-is-not-a-function
'programing' 카테고리의 다른 글
Sql Server 2005 dbo 로그인 이름 변경하는 방법 (0) | 2023.09.17 |
---|---|
jQuery UI 자동 완성 너비가 올바르게 설정되지 않음 (0) | 2023.09.17 |
시각적 코드에서 Undefined type 오류가 발생하지 않도록 전역 클래스를 선언하는 방법 (0) | 2023.09.17 |
게시/구독 패턴(JS/jQuery)을 사용하는 이유는 무엇입니까? (0) | 2023.09.17 |
XElement를 통해 속성을 넣는 방법 (0) | 2023.09.17 |