web-dev-qa-db-ja.com

ReferenceErrorを修正する方法:原始がノードで定義されていません

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

Gulp sass-watchの前にこれを試してみた

npm -g install gulp-cli
263
Ramesh

同じエラーが発生しました。ノード12とgulp 3を使用していると思われます。その組み合わせは機能しません。 https://github.com/gulpjs/gulp/issues/2324

1月の以前の回避策も機能しません: https://github.com/gulpjs/gulp/issues/2246

解決策:gulp 4にアップグレードするか、以前のノードにダウングレードします。

316
Hassan Hodges

_[email protected]_に依存するレガシープロジェクトをNode.js 12に更新するときに同じ問題が発生しました。

これらの修正により、_[email protected]_をバージョン_graceful-fs_にオーバーライドすることにより、_4.2.3_でNode.js 12を使用できるようになります。

プロジェクトが積極的に作業されておらず、npmを使用している場合

これを含む _npm-shrinkwrap.json_ファイル を作成します。

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

この_npm-shrinkwrap.json_ファイルをコミットします。そして、_npm install_を実行して、_npm-shrinkwrap.json_ファイルを更新します。

残念ながら、もう一度_npm install_を実行すると、このソリューションは機能しなくなります。以下の他のソリューションを参照してください。

プロジェクトが活発に開発中であり、yarn v1を使用している場合

Yarn v1 定義されたバージョンへのパッケージの解決をサポート 。 _package.json_にresolutionsセクションを追加する必要があります。

_{
  // 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_は、installが実行される前に_package-lock.json_ファイルを変更して、_graceful-fs_を必要なバージョンに設定します。

プロジェクトでカスタム_.npmrc_ファイルを使用しており、プロキシまたはカスタムレジストリのいずれかが含まれている場合、現在のところnpxは使用しないため、_npx npm-force-resolutions_を_npx --userconfig .npmrc npm-force-resolutions_に変更する必要がありますデフォルトでは、現在のフォルダー_.npmrc_ファイル。

問題の原因

この問題は、Node.js fsモジュールにパッチを当てる_[email protected]_ 依存 が_graceful-fs@^3.0.0_であるという事実に起因しています。

これは、バージョン11.15(開発ブランチからの version であり、本番環境では使用しないでください)までNode.jsで動作していました。

_graceful-fs@^4.0.0_ はNode.js fsモジュールをモンキーパッチしないため、Node.js> 11.15との互換性があります。

これは永続的な解決策ではありませんが、_gulp@^4.0.0_に更新する時間がない場合に役立ちます。

89
Valentin

次のコマンドを使用してnode v11.15.をインストールします。

npm install -g n

Sudo n 11.15.0

解決します

ReferenceError:primordialsはノードで定義されていません

@Terje Norderhaugからの引用@Tom Corelisの回答。

77

次のコマンドを使用して、node v11.15.0およびgulp 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
21
Cundong Zhang

[〜#〜] nvm [〜#〜] を使用して、使用しているノードバージョンを管理し、次のコマンドを実行するとうまくいきました。

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

同じエラーがあり、最終的にすべてのパッケージを更新し、ローカル作業システムの場合と同じようにpackage.json同じノードエンジンバージョンとnpmバージョンに言及したときに修正しました。

 "engines": {
    "node": "10.15.3",
    "npm": "6.9.0"
 }

herokuにデプロイするときにこのエラーが発生していました。

より多くのチェックアウトのために herokuサポート

11
Ravi Anand

Gulp 3.9.1はNode v12.xxで動作しません。Gulp4.0.2にアップグレードする場合、gulpfile.jsを新しい構文(Series&Parallels)で完全に変更する必要があります。あなたの最善の策は、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

乾杯!

9
Aymen Yaseen

ノード12へのアップグレード後に発生したため、ノード安定版へのダウングレードにより、この問題が修正されました。

Sudo n 10.16.0

6
Tom Corelis

Windows 10でこのエラーが発生していました。移動プロファイルが破損していることが判明しました。

npm ERR! node v12.4.0
npm ERR! npm  v3.3.12

npm ERR! primordials is not defined
npm ERR!
npm ERR! If you need help, you may report this error at:
npm ERR!     <https://github.com/npm/npm/issues>

npm ERR! Please include the following file with any support request:

C:\Users\{user}\AppData\Roaming\npmフォルダーを削除すると、問題が修正されました。

3
user1754317

GulpはNodejsバージョン11以降で問題を起こしています。現在のノードバージョンをアンインストールし、v10.15.1を再インストールします。ここにそのバージョンのリンクがあります。これは私を助け、あなたの問題も解決します。

https://nodejs.org/download/release/v10.15.1/

2
Farhan Ahmed

これは遅くなったかもしれませんが、最新のgulp ^ 4.0を使用しながらNode v12を維持することにまだ関心がある人は、次の手順に従ってください。

次を使用して、コマンドラインインターフェイスを更新します(念のため)。

_npm i gulp-cli -g
_

Package.jsonの依存関係セクションの下にあるgulpを追加/更新します

_"dependencies": {
  "gulp": "^4.0.0"
}
_

_package-lock.json_ファイルを削除します

_node_modules_フォルダーを削除します

最後に、_npm i_を実行して、Gulp ^ 4.0の正しいパラメーターを使用して、新しいnode_modulesフォルダーとpackage-lock.jsonファイルをアップグレードおよび再作成します

_npm i
_

Gulp.js 4.0では、series()およびparallel()メソッドが導入され、使用される配列メソッドの代わりにタスクを結合しますGulp 3では、古い_gulpfile.js_スクリプトでエラーが発生する場合と発生しない場合があります。

これらの新機能の適用の詳細については、この site が実際に正義を果たしています。 https://www.sitepoint.com/how-to-migrate-to-gulp-4 /

それが役立つ場合は、強打を残してください

2
Sab

TL:DR

Gulp _3.*_はNode _12.*_以上では動作しません。Nodeをダウングレードするか、Gulpをアップグレードする必要があります。

時間が不足している場合は、Nodeをv11。*以前にダウングレードします。新しい機能が必要で、破損した依存関係の負荷を修正する時間があれば、Gulpを4. *にアップグレードします。上!

他の人がすでに述べたように、Gulp _3.*_はNode _12_以上ではサポートされていないため、Node =バージョンを_11.*_以下に、OR Gulpを_4.0_にアップグレードします。

Gulpをアップグレードすると、クリーンなgulpfilesと seriesまたはparallel で実行されるタスクの組み込み制御の利点がもたらされるため、最適なオプションは最終的にはどれだけの時間があるかに依存しますが、 gulpfileを新しい構文に変更し、might(読み取り:おそらく-このコメントの終わりを参照)は、いくつかの依存関係との競合を引き起こします。


ノードのダウングレード

これが最も簡単で迅速なオプションです。特に、 n または nvm を使用する場合、これらは非常に迅速なインストールとNodeバージョン間の切り替えを可能にします。

NにNodeバージョンをインストール

_n 10.16.0
_

NVMでのNodeバージョンのインストール

_nvm install 10.16.0
_

これを行った後、maynpm依存関係 を再構築するか、または_node_modules_フォルダーと_package-lock.json_ファイルの両方を削除し、依存関係をインストールします。ただし、既存のNodeバージョンに戻すだけの場合は、おそらく大丈夫でしょう。


Gulpのアップグレード

前述のように、これはより時間のかかるタスクですが、長期的にはメリットをもたらす可能性があります。たとえば、Node _12_はESモジュールのネイティブサポート(実験的フラグの後ろ)を導入し、Node _13_。

Nodeを使用してGulpを強制的にアップグレードする必要がある場合があります。または、Gulp 4を使用するメリットが必要な場合があります。

これについてはすでに多くの記事がありますので、詳細については詳しく説明しませんが、繰り返しますが-これは簡単な仕事ではありません 。プロジェクトのサイズによっては、書き直しが必要になる場合があり、依存関係が壊れる場合があります。時間が不足している場合は、少なくとも一時的にノードを単純にダウングレードすることを選択する必要があります。


しかし、私はすでにGulp 4を持っていますが、それでも動作しません!

私のように、すでにGulp 4+を使用している場合(元々Node 10)でGulp _4.0.2_を使用しており、最近アップグレードした場合(_Node 13.8.0_にアップグレードしました) )まだ問題が発生していますか?依存関係が古いバージョンのGulpに依存しており、パイプラインに引っかかっている可能性があります。

私の場合、_gulp-combine-mq_はGulp _3.9.*_を使用した依存関係でした。 gulpfileでこのタスクを無効にすると、Gulpを再度実行できます。

これが発生した場合、いくつかのオプションがあります。

  1. 絶対に必要でない場合は、プラグインを使用しないでください
  2. 代替品を見つける、
  3. プラグインを修正する

言うまでもなく、古いバージョンのGulpに依存するプラグインがいくつかある場合-特にこれらのプラグインがアプリケーションに不可欠な場合-これは、Gulpのアップグレードに非常に多くの時間を費やす可能性があるためです(したがって、上記の警告)。

これが発生した場合は、少なくともパッチが発行されるまで、Nodeをダウングレードすることをお勧めします。

2
Oliver

[プログラムの追加と削除]-> [Node.js]からノードをアンインストールして、Windows 10でこの問題を修正しました。

それから https://nodejs.org/download/release/v11.15.0/ からバージョン11.15.0をインストールしました

実行中のWindows 64ビットの場合、node-v11.15.0-x64.msiを選択します。

2
Rob

yarnを使用している人向け。

yarn global add n
n 11.15.0
yarn install # have to install again

ノードv12.13.1を使用していたため、v10.19.0にダウングレードし、その後は正常に動作します。

0
Leonardo Brito

4.0.1にアップグレードし、必ず移行してください https://fettblog.eu/gulp-4-parallel-and-series/#migration

0
Morgan Segura

私は同じ問題を抱えていますが、この問題を解決しました。まず、npm install問題ではないことを確認してください。次に、バージョンノードとgulpをダウングレードします。バージョンノード10.16.1とgulp 3.9.1を使用しました。あなたのgulpをダウングレードするには、あなたが書くことができます

npm install gulp@^3.9.1
0
Anjasmara Dwi.S

ReferenceErrorに直面していますか?gulpを実行しようとすると、primordials is not definedエラーですか? gulp v3とnode v12を使用している可能性があり、それが問題の原因です。

問題は、gulp v3は(現在)ノードv12では機能しないことです。これは、ノードのfsモジュールにパッチを適用するgraceful-fs@^3.0.0に依存し、そのパッチはノードv12より前に正常に機能したためです。

ReferenceErrorのソリューション:primordialsは定義されていません:

  1. gulpをv4にアップグレードします。このソリューションはエラーを解決します。

  2. Node= v11にダウングレードするには、このエラーを解決します。

  3. Node v12 –このオプションの下に説明されているそのオプションは私のために機能していることがわかっているため、このオプションをお勧めします。

ここ はオプション3の例

0
Milan.Patel

_semantic-ui_をインストールしようとして次のエラーが発生した場合、nodejs.orgから最新の機能を備えたノードjs(13.5.0)の最新バージョンをダウンロードしてみてください。 _index.html_ファイルのヘッダーにリンク( cdnjs link から見つけることができます)を追加するだけです。幸運を祈ります!

0
Haiqa

ここには2つのオプションがあります

  1. Gulp 4またはその他にアップグレードする
  2. 以前のノードバージョンにダウングレードします。
0

Gulp 3でNode 12/13にエラーが発生していましたNode 11

0
user3663323

このエラーは、Nodeの新しいバージョン(12)およびgulp(4未満)。

Nodeおよびその他の依存関係は推奨されません。すべての依存関係の最新バージョンを取得するpackage.jsonファイルを更新することでこれを解決しました。このため、npm-check-updatesを使用します。 package.jsonをすべての依存関係の最新バージョンで更新するモジュール。

参照https://www.npmjs.com/package/npm-check-updates

npm i -g npm-check-updates
ncu -u
npm install

ほとんどの場合、次のようにgulpfile.jsを更新する必要があります。

リファレンスhttps://fettblog.eu/gulp-4-parallel-and-series/#migration

前:

gulp.task(
    'sass', function () {
        return gulp.src([sourcePath + '/sass/**/*.scss', "!" + sourcePath + "/sass/**/_*.scss"])

            ....

    }
);

Other config...

gulp.task(
    'watch', function () {
        gulp.watch(sourcePath + '/sass/**/*.scss', ['sass']);
    }
);

後:

gulp.task('sass', gulp.series(function(done) {
    return gulp.src([sourcePath + '/sass/**/*.scss', "!" + sourcePath + "/sass/**/_*.scss"])

            ...

    done();
}));

Other config...

gulp.task(
    'watch', function () {
        gulp.watch(sourcePath + '/sass/**/*.scss', gulp.series('sass'));
    }
);
0
Rijo K P

s3 npmパッケージを使用するとこのエラーが発生するためです。そのため、問題はgraceful-fsパッケージにあり、更新する必要があります。 4.2.3では正常に動作しています。

したがって、ログトレースに表示されているnpmパッケージを確認し、それに応じてgraceful-fsを4.2.3に更新します。

0
Manish sharma

ADOS CIビルドで同じ理由で同じエラーが発生した場合:

この質問は、助けを求めたときに最初に見つけたものです。最初のNode.jsツールインストーラータスクを使用してNodeをインストールするADOS CIビルドパイプラインがあります。次に、npmタスクを使用してgulpをインストールします(npm install -g gulp)。次に、次のGulpタスクがgulpfile.jsからdefault-taskを実行します。その中にいくつかのゴツゴツしたものがあります。

Node.jsツールを変更して、古いノードではなく12.xの最新ノードをインストールし、最新のgulpバージョンが4.0.2であった場合。結果は、質問で説明したものと同じエラーでした。

このケースで私にとってうまくいったのは、Alphonse R. DsouzaとAymen Yaseenによって既に提案されているように、node.jsを最新の11.xバージョンにダウングレードすることでした。この場合、彼らが提案したコマンドを使用する必要はありませんが、Node.jsツールのインストーラーバージョン仕様を最新のNode 11.xのバージョンに設定するだけです。

enter image description here

インストールされ動作しているNode.jsの正確なバージョンは11.15.0でした。 Gulpをダウングレードする必要はありませんでした。

0
Lupa

ノードをバージョン12にアップグレードした後にこのエラーが発生しましたが、Gulp 3.9.1では機能しません。私のgulpfile.jsがそれほど複雑ではなかったという事実に関して、私は この記事 を使用してGulp 4にアップグレードすることにしました。

0
Mojtaba

私は同じ問題に直面しました。私が試し、私のために働いたこと:-1)。 NODEとGULPのバージョンを確認します(ノードv12とv4未満のgulpの組み合わせは機能しません)2)。 #sudo npm install -g n #Sudo n 10.16.0 npmバージョンをダウングレードしました。正常に動作した後、コンソールの指示に従ってください。

0
kamni jaiswal

node.jsバージョンを12.14.0から10.18.0にダウングレードし、node_modulesを再インストールすることで解決しました

0

私のために働いたのは、npmのインストール中にpython2を使用することでした。

npm install --python =〜/ venv/bin/python

0
Zubin