source

Node.js를 사용하여 "모듈을 찾을 수 없습니다" 오류를 해결하려면 어떻게 해야 합니까?

nicesource 2023. 5. 9. 22:49
반응형

Node.js를 사용하여 "모듈을 찾을 수 없습니다" 오류를 해결하려면 어떻게 해야 합니까?

GitHub에서 모듈을 풀다운한 후 모듈을 빌드하는 지침에 따라 다음을 사용하여 기존 프로젝트로 풀업합니다.

> npm install ../faye

이 방법은 효과가 있는 것으로 보입니다.

> npm list
/home/dave/src/server
└─┬ faye@0.7.1
  ├── cookiejar@1.3.0
  ├── hiredis@0.1.13
  └── redis@0.7.1

그러나 Node.js가 모듈을 찾을 수 없습니다.

> node app.js
node.js:201
        throw e; // process.nextTick error, or 'error' event on first tick
              ^
Error: Cannot find module 'faye'
    at Function._resolveFilename (module.js:334:11)
    at Function._load (module.js:279:25)
    at Module.require (module.js:357:17)
    at require (module.js:368:17)
    at Object.<anonymous> (/home/dave/src/server/app.js:2:12)
    at Module._compile (module.js:432:26)
    at Object..js (module.js:450:10)
    at Module.load (module.js:351:31)
    at Function._load (module.js:310:12)
    at Array.0 (module.js:470:10)

여기서 무슨 일이 일어나고 있는지 정말 이해하고 싶지만, 다음에 어디를 봐야 할지 좀 막막합니다.좋은 의견이라도 있나?

용사를 합니다.npm install합니다(" "" "라는 ").node_modules) app. 아래에 있는 app.jshome/dave/src/server/ 않은 하려면 그지않경은디에서모사듈다용합사다니전설야치해역에를 사용하여 .npm install -g.

저는 보통 대부분의 패키지를 로컬에 설치하여 프로젝트 코드와 함께 체크인합니다.

업데이트(2019년 8월):

요즘에는 npm이 node_modules 디렉토리를 수정할 때 자동으로 생성되는 package-lock.json 파일을 사용할 수 있습니다.그러므로 당신은 패키지 체크인을 생략할 수 있습니다, 왜냐하면package-lock.json현재 사용 중인 node_dll의 정확한 버전을 추적합니다.패지설치에서 과 같이 하십시오.package-lock.jsonpackage.json명령어를 사용합니다.npm ci.

업데이트(2016년 3월):

응답, 특히 코드가 종속된 패키지를 체크인하는 것에 대해 많은 비난을 받았습니다.며칠 전, 누군가가 모든 패키지를 공개하지 않았습니다(https://kodfabrik.com/journal/i-ve-just-liberated-my-modules) 는 React, Babel 및 기타 모든 것을 파괴했습니다.생산 코드를 가지고 있다면 NPM이 실제로 종속성을 유지하는 것에 의존할 수 없다는 것이 이제 분명하기를 바랍니다.

저도 비슷한 문제가 있었습니다. 하는 중node_modules폴더 및 재설치 작업이 완료되었습니다.

rm -rf node_modules
npm install
npm install --save module_name

예를 들어, 오류가 다음과 같은 경우:

[오류: '/root/.npm/form-data' 모듈을 찾을 수 없습니다.] 코드: 'MODULE_NOT_FOUND' }

하여 이 할 수 .npm install --save form-data.

rm package-lock.json
rm -r node_modules
npm i

그러면 문제가 해결되고 모든 패키지가 설치될 것입니다.

사용자의 예: TypeScript 사제예노드모듈공본용기우경의자▁a▁을(를)http,path또는url와합니다."Cannot find module "x"을 실행합니다.

npm install @types/node --save-dev

이 명령은 NodeJS TypeScript 정의를 프로젝트로 가져오므로 Node의 기본 제공 모듈을 사용할 수 있습니다.

문제는 어떤 이유로 첫 번째 npm 설치가 중단되었거나(npm의 SIGINT) 지연이 너무 길거나 데이터가 손상된 경우에 발생합니다.npm 설치를 다시 시도해도 문제가 해결되지 않습니다.

npm first check에서 뭔가 잘못되었기 때문에 파일을 제거하고 npm install을 다시 시작하는 것이 최선의 선택입니다.

환경 변수 NODE_PATH가 올바르게 설정되어 있고 node_modules 경로를 가리키고 있는지 확인합니다. nodejs는 이 변수를 사용하여 라이브러리를 검색합니다.

저는 어제 이 오류를 경험했습니다.제가 깨닫는데 시간이 좀 걸렸습니다.mainpackage.json제가 이동한 파일을 가리키고 있었습니다.일단 업데이트를 해보니 오류가 사라지고 패키지가 작동했습니다.

nvm을 사용하는 경우 다른 라이브러리에 대한 바인딩인 기존 node_modules가 올바른 Node.js 버전에 대해 컴파일되었는지 확인합니다.

저도 같은 오류를 겪고 있었습니다.그 이유는 다음과 같습니다.서버에서 두 개의 애플리케이션을 실행하기 때문에 nvm을 사용합니다. 하나는 node-gd(현재는 Node.js 6에서 실행되지 않음)를 사용하기 때문에 Node.js 5.6이 필요하고 다른 하나는 Node.js 6이 필요합니다. Node.js 6이 적절한 설치입니다.

또한 pm2 툴을 사용하여 배포합니다.

따라서 nvm이 적용되지 않을 때 pm2 프로세스가 시작되므로 Node.js(버전 6)의 apt-get 설치를 사용합니다.메인 pm2 데몬은 Node.js 6으로 시작합니다. 포크 모드에서 애플리케이션을 실행하면 별도의 프로세스에서 시작되고 nvm 설정이 적용됩니다.클러스터 모드에서 애플리케이션을 실행하면 애플리케이션이 nvm이 아닌 환경을 상속합니다.

그래서 클러스터 모드로 전환하려고 했을 때 5.6용으로 컴파일된 바인딩이 실패하고 이 메시지가 표시되어 애플리케이션이 시작되지 않았습니다.

nvm 설정이 적용될 때 pm2를 다시 시작하여 수정했습니다.또한 시작 스크립트를 수정해야 합니다.

이 오류는 다음과 같은 경우에 발생할 수 있습니다.require되었거나 .main필드를 입력합니다.모듈 자체는 설치되어 있지만 npm/node는 모듈의 진입점으로 단일 .js 파일을 사용해야 합니다.에 약에만.main. 으로 " " " 를 . 기본적으로 다음을 찾습니다.index.js모듈의 폴더에 있습니다.모듈의 기본 파일이 index.js라고 하지 않으면 다음을 수행할 수 없습니다.require그것.

회전하는 동안 발견됨browserifyCommon으로 변환합니다. -JS변환합니다.require 모듈; -가능 모듈;browserify된 것은 신경 쓰지 않았습니다.main필드, 그래서 오류가 눈에 띄지 않게 되었습니다.

다른 모든 방법이 사용자에게 적용되지 않는 경우...해라

npm link package_name

npm link webpack
npm link autoprefixer

e.t.c

를 합니다.node_module 프젝트루예폴더트의)myApp)로 이동합니다.myApp합니다.

>myApp>npm install

프로젝트에 필요한 모든 종속성 모듈이 설치됩니다.

전문 팁:

이 오류는 피로와 가벼운 질병과 싸우던 중에 발생했습니다. 왜냐하면 제가 타자를 쳤기 때문입니다.node blahnpm blah.

수신된 오류 메시지는 제 자신의 어리석음을 경고하기에 충분히 화가 나지 않았습니다!

restler 폴더의 경로를 지정합니다. 이 경로는 varrest = require(./node_require/restler');

이것은 저에게 효과가 있었습니다.

누군가에게 유용할 수도 있고 일종의 적신호인 특이한 시나리오를 방금 발견했습니다.

또한 Cannot Find Module 오류가 발생했지만 이상하게도 로컬(Mac 호스팅) Node.js 환경에서 모든 것이 완벽하게 작동했습니다.이 문제는 코드가 Linux 서버에 배포되었을 때만 발생했습니다.

음... Mac 기반의 Node.js 설치를 무시하는 것이 완벽하게 만족스러운 오타인 것으로 밝혀졌습니다.

포함된 내용은 다음과 같습니다.

var S3Uploader = require('./S3Uploader.class');

하지만 실제 파일의 이름은 "s3Uploader.class.js"였습니다.

코드와 파일 이름 사이의 's' 대 'S'의 케이싱 차이에 주목합니다.

따라서 여기에 있는 다른 솔루션 중 문제를 해결하지 못하는 솔루션이 없을 경우, 포함된 파일 이름의 문자를 잘못 입력하지 않았는지 세 번 확인하십시오.:)

그리고 DUH!

확인할 장소를 하나 더 추가할 수 있습니다. 제가 사용하려던 패키지는 개인 NPM 레포에 게시한 제 자신의 패키지 중 하나입니다.패키지에서 '주' 속성을 구성하는 것을 잊었습니다.제대로 된 json.그래서 패키지는 소비 패키지의 node_modules 폴더에 있었지만 "모듈을 찾을 수 없습니다"라는 메시지를 받았습니다.내 실수를 깨닫는 데 몇 분이 걸렸습니다. :-(

한 후 하면 remove 모노드든package-lock.json 그고뛰어요를 실행합니다.npm install.

  • 다음 명령을 단계별로 실행합니다.문제를 해결했습니다.

npm 캐시 정리 - 강제 실행
rm package-lock.json
-r -r node_message
--save --session-peer-deps

나의 경우에는.UNMET PEER DEPENDENCY redux@^3.0.0메시지가 하고 --save를 합니다. 모든 오류 메시지를 확인하고 --save를 사용하여 누락된 모듈을 다시 설치하십시오.

npm install redux --save

이 문제는 다음을 사용하여 발생했습니다.live-server(Fullstack React 북사):

나는 계속해서 다음을 받았습니다.

Error: Cannot find module './disable-browser-cache.js' 
...

저는 제 소포를 수정해야 했어요.제이손

  • 시작:

    "filename": {..."server": "live-server public --host=localhost --port=3000 --middleware=./disable-server-cache.js"... } "cisco": {

  • 받는 사람:

    "server": "live-server public --host=localhost --port=3000 --middleware=../../disable-server-cache.js"...}

상대적 경로가 끊어지거나 어색한 것 같습니다. ./ 되다../../

여기서 문제를 발견했습니다.

또한 그 책을 따르는 사람이 있다면,

  1. packages.json의 devDependencies를 다음으로 변경합니다.

"live-server": "https://github.com/tapio/live-server/tarball/master"

현재 이 버전은 v1.2.0에서 v1.2.1로 업그레이드됩니다.

  1. nvm을 사용하면 좋습니다.
  2. (*는 다른 두통을 일으킴)를 하는 것이.nvm install v13.14.0
  3. nvm alias default v13.14.0
  4. npm으로 npm i -g npm@7.3.0
  5. 실행:npm update
  6. 사용할 수 있습니다.npm list종속성 계층도 확인합니다. (어떤 이유에서인지 노드 15 + 최신 npm은 기본적으로 첫 번째 수준인 la package.json만 표시됩니다.)그러면 기본 명령이 무의미해집니다! 추가할 수 .--depth=n)을 클릭하여 명령을 다시 유용하게 만듭니다.
  7. 사용할 수 있습니다.npm audit또한. ( 의 가 필요한 . 필요한 문제가 있습니다(업데이트).chokidar최신 버전으로 업그레이드할 수 있습니다. live-server최신 노드 v14 라이브러리 버전을 지원하도록 업데이트되지 않았습니다.

여기에서 유사한 게시물 보기


각주:JSX 섹션에 도착하면 여기에서 제 답변을 확인하십시오. https://stackoverflow.com/a/65430910/495157

다음 작업을 수행할 수 있는 경우:

  • 소품, 상태 및 하위 요소가 포함된 고급 구성요소 구성.P182+, 노드 버전 13은 일부 종속성에 대해 지원되지 않습니다.
  • 나중에 그것에 대한 조사 결과도 추가할 것입니다.

저 같은 경우에는.

npm install -D tslib @types/node

내 문제를 해결했고, 그때 나는 달릴 수 있었습니다.

ts-node index.ts

성공적으로

저는 제 패키지를 게시한 다음 다른 프로젝트에 포함시키려고 했습니다.저는 첫 번째 모듈을 어떻게 만들었는지 때문에 그 문제를 겪었습니다.ES2015 내보내기를 사용하여 모듈을 만듭니다. 예를 들어 모듈의 모양은 다음과 같습니다.

export default function(who = 'world'){
    return `Hello ${who}`;
}

Babel로 컴파일한 후 출판되기 전:

'use strict';

Object.defineProperty(exports, "__esModule", {
    value: true
});

exports.default = function () {
    var who = arguments.length <= 0 || arguments[0] === undefined ? 'world' : arguments[0];


    return 'Hello ' + who;
};

그래서 그 후에npm install module-name없음)에서.

var hello = require('module-name').default;

실제로 패키지를 가져오려고 합니다.

도움이 되길 바랍니다!

와 함께 사용하는 동안 이 문제가 발생했습니다.

하나의 파일을 폴더로 변환했습니다.

감시자는 새 폴더를 보지 못한 것 같았고 모듈은 이제 없습니다.

프로세스를 다시 시작하여 수정되었습니다.

아마도 당신은 나처럼 존재하지 않는 엔진에 '뷰 엔진'을 익스프레스로 설정하거나 등록되지 않은 템플릿 엔진을 사용하려고 했을 것입니다. 다음을 사용해야 . app.engine('engine name',engine) app.set('view engine','engine name')

노드/npm을 제거한 다음 안정적인 버전(최신 버전이 아님)을 다시 설치하는 것이 제게는 효과적이었습니다.

sudo rm -rf /usr/local/{lib/node{,/.npm,_modules},bin,share/man}/{npm*,node*,man1/node*}

https://nodejs.org/en/download/

저의 경우, 저는 적절한 버전의 nvm을 사용하지 않았습니다.

드물지만 모듈 이름에 오타가 있을 수도 있습니다.실할때파이름의가누었다습니락되행일▁executings▁name다를 실행할 때 파일 이름의 "를.node .\util.js에.node.\utils.js그리고 모든 것을 삭제해도 파일을 실행할 수 없다는 것을 알게 될 때까지 이 질문 아래에 있는 모든 답 중에서 해결책을 찾지 못했습니다!

분명히 이 질문으로 판단했을 때, 많은 가능한 원인이 있습니다.

이 기술을 사용한 사람이 저만큼 멍청하지 않기를 바라며 누군가에게 도움이 될 수도 있습니다.

폴더 트리에 node_modules 폴더가 있는지 확인합니다.

시나리오 1: 여러 프로젝트 간에 node_modules 폴더를 공유하는 프로젝트 폴더가 있었다면 문제가 없었을 입니다.

|- projects
| |- node_modules     <- OK
| |- project1         <- No node_modules folder
| | |- package.json
| |- project2         <- No node_modules folder
| | |- package.json

시나리오 2: 다른 성격의 세 번째 프로젝트를 추가할 경우 해당 프로젝트에 node_modules 폴더를 유지하도록 선택할 수 있습니다.

|- projects
| |- node_modules     <- Can be used by project 3
| |- project1         <- No node_modules folder
| | |- package.json
| |- project2         <- No node_modules folder
| | |- package.json
| |- project3
| | |- node_modules   <- Packages for project 3 only
| | |- package.json

프로젝트 3의 노드 모듈 폴더에 있는 일부 패키지가 상위 폴더의 node_modules 폴더에서 찾거나 찾지 못하는 패키지에 의존하고 있는 것 같습니다.프로젝트 3의 node_modules 폴더에서 종속성을 찾을 것으로 예상되지만,일부 패키지를 가져오고 참조하는 방식 때문일까요?

그것이 일어나기를 기다리는 재앙임은 말할 필요도 없습니다.

여러 패키지 버전을 설치하면서 노드 버전을 업그레이드할 때 이 문제가 발생했습니다.프로젝트에서 작업할 도커 이미지/컨테이너를 만들었습니다.

문제는 패키지를 추가하고 프로젝트를 다시 만들 때 도커 이미지가 다시 생성되지 않았다는 것입니다.적절한 정보는 제 지역 소포에 들어 있었습니다.json 및 package-lock.json 파일.

컨테이너뿐만 아니라 도커 이미지를 삭제한 것이 제 문제를 해결했습니다.

결국 제게 효과가 있었던 것은 병합에 대한 의존성을 외부에 포함시키는 것이었습니다.

externals: {
    puppeteer: 'require("puppeteer")',
}

패키지와 관련된 node_modules 경로를 선언합니다.당신의 소포에 json.json을 '추가 리소스'로 지정합니다.

"extraResources": [
    "node_modules/puppeteer,
}

언급URL : https://stackoverflow.com/questions/9023672/how-do-i-resolve-cannot-find-module-error-using-node-js

반응형