[node.js] ReferenceError 수정하는 방법 : primordials가 노드에 정의되어 있지 않습니다

npm install로 노드 모듈을 설치 한 다음 명령 프롬프트에서 gulp sass-watch를 시도했습니다. 그 후 나는 아래 응답을 얻었다.

[18:18:32] Requiring external module babel-register
fs.js:27
const { Math, Object, Reflect } = primordials;
                                  ^

ReferenceError: primordials is not defined

꿀꺽 꿀꺽 마시기 전에 이것을 시도했습니다

npm -g install gulp-cli



답변

같은 오류가 발생했습니다. 노드 12와 꿀꺽 꿀꺽 3을 사용하고 있다고 생각합니다. https://github.com/gulpjs/gulp/issues/2324

Jan의 이전 해결 방법은 다음 중 하나도 작동하지 않습니다. https://github.com/gulpjs/gulp/issues/2246

솔루션 : gulp 4로 업그레이드하거나 이전 노드로 다운 그레이드하십시오.


답변

gulp@3.9.1Node.js 12 에 따라 레거시 프로젝트를 업데이트 할 때도 같은 문제가 발생했습니다 .

이 수정 사항을 사용하면 버전 gulp@3.9.1을 재정 의하여 Node.js 12를 사용할 수 있습니다 .graceful-fs4.2.3

프로젝트가 활발히 진행되지 않고 npm을 사용하는 경우

이것을 포함 하는 npm-shrinkwrap.json파일 을 작성하십시오 .

{
  "dependencies": {
    "graceful-fs": {
      "version": "4.2.3"
    }
  }
}

npm-shrinkwrap.json파일을 커밋 하십시오. 그런 다음 파일 npm install을 업데이트 할 실행 npm-shrinkwrap.json하십시오.

불행히도이 솔루션은 npm install다시는 더 이상 작동하지 않습니다 . 아래의 다른 솔루션을 참조하십시오.

프로젝트가 활발히 개발 중이고 원사 v1을 사용하는 경우

Yarn v1 은 패키지를 정의 된 버전으로 해석하는 것을 지원합니다 . 에 resolutions섹션 을 추가해야 합니다 package.json.

{
  // Your current package.json contents
  "resolutions": {
    "graceful-fs": "4.2.3"
  }
}

감사합니다 @jazd이 문제를 해결하기 위해 에게 .

프로젝트가 활발히 개발 중이고 npm을 사용하는 경우

npm-force-resolutions사전 설치 스크립트로 사용하면 yarn v1과 유사한 결과를 얻을 수 있습니다. 다음과 같이 package.json을 수정해야합니다.

{
  // Your current package.json
  "scripts": {
    // Your current package.json scripts
    "preinstall": "npx npm-force-resolutions"
  },
  "resolutions": {
    "graceful-fs": "4.2.3"
  }
}

npm-force-resolutions완료 되기 전에 원하는 버전 package-lock.json으로 설정 graceful-fs하도록 파일을 변경합니다 install.

.npmrc프로젝트에서 사용자 정의 파일을 사용하고 있고 프록시 또는 사용자 정의 레지스트리가 포함되어있는 경우 현재로 변경 npx npm-force-resolutions하여 기본적으로 현재 폴더 파일을 사용하지 npx --userconfig .npmrc npm-force-resolutions않기 때문에로 변경해야합니다 .npx.npmrc

문제의 기원

이 문제 는 어떤 monkeypatches Node.js 모듈 에 gulp@3.9.1 따라 달라집니다 .graceful-fs@^3.0.0fs

이것은 11.15 버전 ( 개발 브랜치 의 버전 이므로 프로덕션에서는 사용해서는 안 됨) 까지 Node.js와 함께 작동했습니다 .

graceful-fs@^4.0.0Node.js fs모듈을 더 이상 monkeypatch하지 않으므로 Node.js> 11.15와 호환됩니다.

이 솔루션은 다년생 솔루션이 아니지만로 업데이트 할 시간이 없을 때 도움이됩니다 gulp@^4.0.0.


답변

다음 명령을 사용하고 노드 v11.15.0을 설치 하십시오 .

npm install -g n

sudo n 11.15.0

해결할 것이다

ReferenceError : 원시가 노드에 정의되어 있지 않습니다

@Terje Norderhaug @Tom Corelis의 답변에서 참조하십시오.


답변

1 분 후에 수정하십시오.

다음 단계를 따르십시오 . 나는 Windows 10을 사용하고 있으며 완벽하게 작동했습니다!

  1. 다음 내용 package.json으로 npm-shrinkwrap.json파일을 작성한 동일한 디렉토리에서 :
    {
      "dependencies": {
        "graceful-fs": {
            "version": "4.2.2"
         }
      }
    }
  1. 실행 npm install하고 걱정하지 마십시오 npm-shrinkwrap.json. 많은 콘텐츠로 업데이트 됩니다.

  2. gulp프로젝트를 시작하려면 실행하십시오 .


답변

설치 명령에 따라 사용 node v11.15.0gulp v3.9.1:

npm install -g n

sudo n 11.15.0

npm install gulp@^3.9.1
npm install
npm rebuild node-sass

이 문제를 해결할 것입니다 :

ReferenceError: primordials is not defined in node


답변

NVM 을 사용하여 사용 중인 노드 버전을 관리하고 다음 명령을 실행하면 나에게 도움이되었습니다.

$ cd /to/your/project/
$ nvm install lts/dubnium
$ nvm use lts/dubnium
$ yarn upgrade # or `npm install`


답변

Gulp 3.9.1은 Node v12.xx에서 작동하지 않으며 Gulp 4.0.2로 업그레이드하는 경우 새로운 구문 (Series & Parallels)으로 gulpfile.js를 완전히 변경해야합니다. 따라서 가장 좋은 방법은 Node V 11.xx로 다운 그레이드하는 것입니다 .11.15.0은 저에게 효과적이었습니다. 터미널에서 다음 코드를 사용하면됩니다.

nvm install 11.15.0

nvm use 11.15.0 #just in case it didn't automatically select the 11.15.0 as the main node.

nvm uninstall 13.1.0

npm rebuild node-sass

건배!