ReferenceErrorの修正方法:primordialsがノードで定義されていません


366

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

回答:


468

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

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

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


20
カオスと同じ問題が発生しました。ノードをv11.15.0にダウングレードするとうまくいきました。
Terje Norderhaug

4
ここでwebshotノードパッケージを使用した同様の問題。ノードv12に進む前に、エンドで何かを更新する必要があると思います。
Jacob Morrison、

69
私はnode v12.1.0とgulp を使用していますgulp@4.0.2が、機能しません
モストウォンテッド

32
私はnode v10.xv3.xgulp を試してみましたが、その後魔法が起こりました
kuldipem

12
Valentinが投稿したnpm-shrinkwrap.jsonソリューションを使用することをお勧めします:stackoverflow.com/a/58394828/2726785、これは受け入れられるソリューションです。
エリックハンセン

247

gulp@3.9.1Node.js 12に依存するレガシープロジェクトの更新時に同じ問題が発生しました。

これらの修正により、バージョンにgulp@3.9.1オーバーライドgraceful-fsすることでNode.js 12を使用できるようになります4.2.3

プロジェクトがアクティブに作業されておらず、npmを使用している場合

これを含むnpm-shrinkwrap.jsonファイルを作成します

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

このnpm-shrinkwrap.jsonファイルをコミットします。次にnpm installnpm-shrinkwrap.jsonファイルを更新する実行します。

残念ながら、このソリューションは、npm install再度使用すると機能しなくなります。以下の他のソリューションを参照してください。

プロジェクトが開発中で、yarn 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-resolutionsnpx --userconfig .npmrc npm-force-resolutions今のようなので、npx現在のフォルダを使用しない.npmrc、デフォルトでファイルを。

問題の原因

この問題は、事実に起因gulp@3.9.1 依存graceful-fs@^3.0.0のNode.jsのmonkeypatchesどのfsモジュールを。

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

graceful-fs@^4.0.0Node.js fsモジュールのモンキーパッチを行わなくなりました。これにより、Node.js> 11.15と互換性があります。

これは永続的なソリューションではありませんが、に更新する時間がない場合に役立ちますgulp@^4.0.0


6
うわー-これは素晴らしいです!ノードのインストールをロールバックしたくなかったので、これは完璧なソリューションです。
dgo

@Valentinこれは私にとってはうまくいきましたが、どのようにうまくいきましたか?私が読んだことから、公開可能であることに加えて、npm-shrinkwrap.jsonはpackage-lock.jsonと同じように動作するはずです。ここで同じように動作しないのはなぜですか?なぜこれを修正するためにnpm-shrinkwrap.jsonが必要なのですか?
JordRoss

4
このソリューションは、この特定の状況に最適です-それは実際に受け入れられる答えであるはずです。
zerodevx

14
これは受け入れられる答えである必要があります
jtate

1
@Valentinを実行npm installして再生成したpackage-lock.json場合npm-shrinkwrap.json、この依存関係のロックに失敗したようです。を再実行した後もnpm install --no-save、生成されたものは、package-lock.json欠落している依存関係をインストールするnpmを示しています。
PuiMan Cheui

95

次のコマンドを使用して、ノードv11.15.0をインストールします

npm install -g n

sudo n 11.15.0

解決します

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

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


3
私のために働いた!すばらしい答えです。何時間もこれを理解しようとしました。
GlennFriesen

3
素晴らしい答え!
user1974753

2
パーフェクト!私のために働いた。
Raja

2
本当に、あなたは私の命を救った。ありがとう。
trjade

6
(Windows 64)マシンでnpm install -gnを実行すると、エラーが発生します。npmERR!notsup n@6.1.3のサポートされていないプラットフォーム:必要な{"os": "!win32"、 "arch": "any"}(現在:{"os": "win32"、 "arch": "x64"})
ダリルマッカロー

44

1分で修正します。

の手順に従ってください。私はWindows 10を使用していますが、完全に機能しました。

  1. 次の内容のファイルをpackage.json作成したのと同じディレクトリ内npm-shrinkwrap.json
    {
      "dependencies": {
        "graceful-fs": {
            "version": "4.2.2"
         }
      }
    }
  1. 実行するとnpm install、心配はいりませんnpm-shrinkwrap.json。大量のコンテンツで更新されます。

  2. 実行gulpしてプロジェクトを開始します。


1
勝利10 / WSLの下での魅力のように動作します-ありがとう!
opHASnoNAME

1
魅力のように機能する答え
Adiii

1
Ubuntuでも同様に機能しました。
Manoj-GT

1
Win 10 proでうまく機能します!ありがとう:)
elhef

1
すごい!FilterBlendプロジェクトを実行しようとしましたが、このいまいましいエラーが発生しました。gulp 4にアップグレードした後、別のエラーが発生しました(gulp.hasTaskは関数ではありません)。このファイルを作成すると、問題が回避されました。
デニスカッセル

27

次のコマンドを使用して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

1
私のために働いた、すべてのステップに従わなければならなかった。👍
ジェイソン・

1
10.(9および11のようなすべての奇数のバージョン番号)使用NodeJSをshortliving NodeJSブランチを使用しないでください
ダニエル・ルフ

ありがとう
ござい

真剣に、すべてのステップに従ってください。
Ele

Windowsでは、最初のコマンドがEBADPLATFORMで失敗します。
RonanPaixão

22

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

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

3
私はいつもこれに戻ってきます。

3
短命なNodeJSブランチ(9や11のようなすべての奇数バージョン番号)を使用しないでください。NodeJS10を使用してください。また10、コード名の代わりに使用してください。
ダニエル・ルフ

1
Windowsの場合はnvm-windowsを使用します
Lupa

12

Gulp 3.9.1はNode v12.xxでは機能しません。Gulp4.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

乾杯!


この後、エラーが発生します: "/ c / Users / User / AppData / Roaming / npm / node:line 8:C:\ Users \ User \ AppData \ Roaming \ npm / node_modules / node / bin / node:No such file orディレクトリ」
IvanTopić19年

11

同じエラーを持っていたし、最終的に、すべてのパッケージを更新したときは、言及したことを修正し、同じノードエンジンのバージョンとNPMバージョンではpackage.json、それは私のローカルの作業システムであるとして。

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

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

Herokuサポートのチェックアウトについて


6

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

sudo n 10.16.0


3
これを試してエラーが発生した場合:「sudo:n:コマンドが見つかりません」、n最初に必ずインストールしてください: 'npm install -g n'
AlmostPitt

これをWindows 10(64ビット)で試してみました:-C:\ react-script-editor> npm install -gn npm ERR!コードEBADPLATFORM npm ERR!notsup n@6.1.0のサポートされていないプラットフォーム:必要な{"os": "!win32"、 "arch": "any"}(現在:{"os": "win32"、 "arch": "x64"}) npm ERR!notsup有効なOS:!win32 npm ERR!notsup有効なArch:任意のnpm ERR!notsup実際のOS:win32 npm ERR!notsup Actual Arch:x64
Nigel Price

6

TL:DR

Gulp 3.*はNode 12.*以上では機能しません。ノードをダウングレードするか、Gulpをアップグレードする必要があります。

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

他の人がすでに述べたように、Gulp 3.*はNode 12以上ではサポートされていないため、Nodeのバージョンを11.*以下にダウングレードするか、Gulpをにアップグレードする必要があります4.0

最良のオプションは、最終的には、どのくらいの時間を費やすかに依存します。Gulpをアップグレードすると、よりクリーンなgulpfileと、タスクを直列または並列に実行させる組み込みの制御の利点がもたらされるだけでなく、gulpfileを新しい構文に書き換えることにも依存します。可能性があります(読み取り:おそらく-このコメントの終わりを参照)いくつかの依存関係との競合を引き起こします。


ノードのダウングレード

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

Nへのノードバージョンのインストール

n 10.16.0

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

nvm install 10.16.0

これを実行した後、npm依存関係を再構築するか、フォルダーとファイルの両方を削除して、依存関係を再インストールする必要ある場合あります。ただし、既存のノードバージョンに戻すだけの場合は、おそらく問題ありません。node_modulespackage-lock.json


Gulpのアップグレード

上記のように、これはより時間のかかるタスクですが、長期的にはメリットがあるかもしれません。たとえば、Node 12はESモジュールのネイティブサポート(実験的なフラグの後ろ)とNodeでの完全サポートを導入してい13ます。

それを使用するためにノードをアップグレードし、Gulpをアップグレードする必要がある場合があります。または、Gulp 4を使用することの利点を単に望んでいるかもしれません。Gulp4は、タスクの作成をより効率的に制御できるからです。

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


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

私のように、すでにGulp 4+を使用していて(私は4.0.2もともとNode 10でGulpを使用していた)、最近アップグレードした(私はNode 13.8.0)のに問題が解決しない場合は、依存関係が古いバージョンのGulpがパイプラインに巻き込まれています。

私の場合、gulp-combine-mqGulpを使用して依存関係がありました3.9.*。gulpfileでこのタスクを無効にすると、Gulpを再度実行できるようになりました。

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

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

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

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


4

このエラーは、Node(12)の新しいバージョンとgulpの古いバージョン(4未満)が原因です。

ノードおよびその他の依存関係のダウングレードは推奨されません。package.jsonすべての依存関係の最新バージョンを取得するファイルを更新することで、これを解決しました。これには、を使用しますnpm-check-updatespackage.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'));
    }
);

複雑なgulpファイルがない場合に最適なソリューションです。私の場合、gulpfile.jsごとに2行を調整するだけで済みました。短い移行ガイドをありがとう!
トビアス

3

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フォルダを削除すると問題が解決しました。


2
これにより、npmの依存関係全体がめちゃくちゃになりました。
アシロン

3

次の手順に従ってください。npm installを複数回実行したり、他のモジュールをインストールしたり、プロジェクトをアーティファクトにパブリッシュしたりすることで、完全に機能しました。

package.jsonがあるのと同じディレクトリに、次の内容のnpm-shrinkwrap.jsonファイルを作成します。

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

npm installを実行します。心配しないでください。npm-shrinkwrap.jsonが大量のコンテンツで更新されます。package.jsonスクリプトオプションを更新して、この更新を削除しましょう。

"scripts": {
    "preshrinkwrap": "git checkout -- npm-shrinkwrap.json",
    "postshrinkwrap": "git checkout -- npm-shrinkwrap.json"
}

これでnpm installを実行できるようになり、npm-shrinkwrap.jsonはそのままの状態で永久に機能します。


2

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

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

npm i gulp-cli -g

gulppackage.jsonの下の依存関係セクションを追加/更新します

"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では、Gulp 3で使用されている配列メソッドの代わりに、タスクを組み合わせるためのseries()およびparallel()メソッドが導入されているため、古いgulpfile.jsスクリプトでエラーが発生する場合と発生しない場合があります。

これらの新機能の適用の詳細については、このサイトが実際に正当化しています:https : //www.sitepoint.com/how-to-migrate-to-gulp-4/

それが役に立った場合は、ご飯を残してください


何のgulp-cliため?私はあなたの手順に従い、すべてを最初に機能させました。しかし、それをアンインストールしgulp-cli(それがどこで使用されているのかわからなかったため)、すべてが引き続き機能しました。しかし、私はノードv12.9.1とGulpで再び稼働しているので、答えてくれてありがとう4.0.2
MuffinTheMan

お役に立てて嬉しいです。gulp-cliコマンドラインユーティリティです。これにより、gulpの
Sab

2

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

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

実行中のウィンドウが64ビットの場合は、node-v11.15.0-x64.msiを選択します。



2

私は同じ問題に直面しました。私が試し、私のために働いたこと:

  1. NODEとGULPのバージョンを確認してください(ノードv12とv4未満のgulpの組み合わせは機能しません)

  2. NPMバージョンを次の方法でダウングレードします。

    • sudo NPMインストール-gn
    • sudo n 10.16.0

それはうまくいきました、そしてあなたのコンソールの指示に従ってください。



1

をご利用の方へyarn

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

10.(9および11のようなすべての奇数のバージョン番号)使用NodeJSをshortliving NodeJSブランチを使用しないでください
ダニエル・ルフ

0

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

この質問は、私が助けを求めて見つけた最初のものでした。ADOS CIビルドパイプラインがあり、最初のNode.jsツールインストーラータスクを使用してNodeをインストールします。次に、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ツールインストーラーのバージョン仕様を11.xの最新のノードバージョンに設定するだけです。

ここに画像の説明を入力してください

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


0

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


0

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

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

0

これは、間の互換性の問題であるためであるnodegulp、システムインチ をダウングレードnodeまたはアップグレードするgulpと、この問題が修正されます。

sudo npm i -g n
sudo n 11.15.0

それでも機能しない場合は、node_modulesフォルダーとpackage-lock.jsonファイルを削除し、npm iコマンドを使用して再度インストールしてください。


0

私にとってうまくいったのは、npmのインストール中にpython2を使用することでした。

> npm install --python=~/venv/bin/python

0

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

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


0

また、Gulp 3を使用してノード12/13でエラーが発生し、ノード11に移動しても機能しました。



0

インストールしようとしてsemantic-ui次のエラーが発生する場合js(13.5.0)は、Node.js.orgから最新の機能を備えた最新バージョンのノードをダウンロードしてみてください。さらに、NPMインストールセマンティックを試すのではなく、リンクを追加するだけです(これはcdnjsリンクあなたのヘッダにindex.htmlファイル。運のベストを!


ここでのコード例はすばらしい追加です。
rhand

-1

問題を修正する手順:-

次の手順で問題を修正しました:-

  1. NVMのインストール
  2. コマンド「nvm install lts / dubnium」を使用してlts / dubniumをインストールしました
  3. コマンド「nvm install lts / dubnium」を使用してlts / dubniumを使用します

これでデプロイを一気に行うことができます


1
これは、@ kevink
Z4-

-1

まず、NPMのインストールが問題ではないことを確認することをお勧めします。次に、nodeとgulpのバージョンをダウングレードします。ノード10.16.1とgulp 3.9.1を使用しました。

あなたの気分をダウングレードするには、あなたが試すことができます

npm install gulp@^3.9.1
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.