programing

NodeJs : TypeError : require(...)가 함수가 아닙니다.

css3 2023. 9. 17. 13:27

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')는 함수가 아닌 빈 개체입니다.

Node.js에서 순환 종속성을 처리하는 방법

다음 항목을 내보내는 것을 기억하십시오.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