我已经通过“npm install”安装了Node.js模块,然后尝试在命令提示符下执行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

我也犯了同样的错误。我怀疑你在使用Node.js 12和Gulp.js 3。这种组合不起作用:Gulp.js 3在Node.js 12#2324上被破坏

1月份以前的解决方法也不起作用:更新到Node.js 11.0.0后,运行Gulp.js退出时出现“ReferenceError:internalBinding未定义”#2246

解决方案:要么升级到Gulp.js 4,要么降级到Node.js的早期版本。


我也犯了同样的错误。当我更新了所有包,然后在package.json中提到了与本地工作系统相同的Node.js引擎版本和npm版本时,我终于解决了这个问题。

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

我在Heroku上部署时遇到了这个错误。

更多信息,请查看Heroku支持。


使用NVM管理您正在使用的Node.js版本,运行以下命令对我有效:

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

我在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文件夹解决了我的问题。


升级到4.0.1并确保迁移https://fettblog.eu/gulp-4-parallel-and-series/#migration


我也面临同样的问题。我所尝试的以及对我有用的:

检查Node.js和Gulp.js的版本(Node.js v12和Gulp.js低于v4的组合不起作用)我通过以下方式降级了NPM版本:sudo NPM安装-g n第10.16.0节

它工作得很好。然后,只需遵循控制台的说明即可。


降级到Node.js稳定版为我解决了这个问题,因为它发生在我升级到Node.js12之后:

sudo n 10.16.0

我建议您首先确保NPM安装不是您的问题。然后降级Node.js和Gulp.js版本。我使用了Node.js 10.16.1和Gulp.js 3.9.1。

要降级Gulp.js安装,您可以尝试:

npm install gulp@^3.9.1

使用以下命令安装Node.js v11.15.0:

npm install -g n

sudo n 11.15.0

将解决

ReferenceError:节点中未定义原始值

来自@Terje Norderhaug@Tom Corelis的回答。


在npm安装过程中使用Python 2(可执行Python)对我很有用:

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

使用以下命令安装Node.js v11.15.0和Gulp.js 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:节点中未定义原始值


对于使用纱线的用户:

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

我们在根据gulp@3.9.1到Node.js 12+。

这些修复使您能够使用Node.js 12+gulp@3.9.1通过将优雅的fs覆盖到版本^4.2.10。

如果您正在使用pnpm

pnpm支持覆盖某些依赖项版本。为此,您应该在package.json文件中添加pnpm部分:

{
  "pnpm": {
    "overrides": {
      "graceful-fs": "^4.2.10"
    }
  }
}

如果您使用纱线v1

Yarn v1支持将包解析为定义的版本。您需要在package.json中添加一个resolutions部分:

{
  "resolutions": {
    "graceful-fs": "^4.2.10"
  }
}

感谢@jazd以这种方式解决问题。

如果您正在使用npm

运行此命令以了解您正在使用的Node.js版本:

node -v

它将返回一个版本号<major><小调><补丁>如18.11.0。

如果您的版本是v16.14.0或更高版本,则可以通过在package.json文件中添加覆盖部分来覆盖曼妙fs的版本:

{
  "overrides": {
    "graceful-fs": "^4.2.10"
  }
}

否则,您需要使用npm-force分辨率作为预安装脚本,以便能够通过如下方式更改package.json文件来覆盖优雅fs的版本:

{
  "scripts": {
    "preinstall": "npx npm-force-resolutions"
  },
  "resolutions": {
    "graceful-fs": "^4.2.10"
  }
}

npm-force解析将在安装完成之前更改package-lock.json文件,以将优雅的fsto设置为所需版本。

如果您在项目中使用自定义.npmrc文件,并且该文件包含代理或自定义注册表,则可能需要将npx-npm-force分辨率更改为npx-userconfig.npmrc npm-force分辨率,因为某些版本的npx默认情况下不使用当前文件夹.npmrc。

问题的根源

这个问题源于以下事实:gulp@3.9.1取决于monkeypatchesNode.js fs模块的优雅fs@^3.0.0。

在11.15版本之前,这一直适用于Node.js(这是一个开发分支的版本,不应该在生产中使用)。

优雅的fs@^4.0.0不再对Node.js fs模块进行monkeypatch,这使其与Node.js>11.15兼容(已测试并与版本12、14和16一起使用)。

请注意,这不是一个长期的解决方案,但当您没有时间更新到狼吞虎咽@^4.0.0时,它会有所帮助。


当我们使用s3 NPM包时,也会出现此错误。所以问题出在优雅的fs包上——我们需要更新它。它在4.2.3中运行良好。

所以只需查看日志跟踪中显示的NPM包,并根据4.2.3更新优雅的fs。


Gulp 3.9.1不适用于Node v12.x.x,如果升级到Gulp 4.0.2,则必须使用新语法(series&parallels)完全更改gulpfile.js。因此,您最好的选择是通过在终端中使用以下代码降级到Node.js v 11.x.x(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

对于在ADOS CI Build中由于相同原因出现相同错误的任何人:

这个问题是我在寻求帮助时发现的第一个问题。我有一个ADOS CI构建管道,其中第一个Node.js工具安装程序任务用于安装Node.js。然后,npm任务用于安装Gulp.js(npm install-g gulf)。然后,下面的Gulp.js任务运行gulpfile.js中的默认任务。

当我将Node.js工具更改为安装12.x最新节点而不是旧节点时,Gulp.js的最新版本为4.0.2。结果与问题中描述的错误相同。

在这种情况下,对我有用的是将Node.js降级到最新的11.x版本,正如Alphonse R.Dsouza和Aymen Yaseen所建议的那样。在这种情况下,虽然不需要使用他们建议的任何命令,但只需将Node.js工具安装程序版本规范设置为11.x的最新Node.js版本。

安装并运行的Node.js的确切版本是11.15.0。我不必降级Gulp.js。


我在Node.js 12/13和Gulp.js 3上也遇到了一个错误。移动到Node.js 11是有效的。


如果在使用最新的gulp^4.0时保持Node.js v12,请执行以下步骤:

使用以下命令更新命令行界面(仅供预防):

npm i gulp-cli -g

添加/更新package.json文件的gulpunderdependencies部分

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

删除package-lock.json文件。

删除node_modules文件夹。

最后,运行npm i升级并重新创建一个全新的node_modules文件夹和package-lock.json文件,其中包含Gulp^4.0的正确参数:

npm i

注意,Gulp.js 4.0引入了series()和parallel()方法来组合任务,而不是Gulp 3中使用的数组方法,因此您可能会或可能不会在旧的gulpfile.js脚本中遇到错误。

为了了解更多关于应用这些新功能的信息,本网站对其做了充分的介绍:如何迁移到Gulp.js 4.0


我在Windows 10上通过从“添加或删除程序”卸载Node.js修复了这个问题→ Node.js。

然后我从https://nodejs.org/download/release/v11.15.0/

如果运行的是Windows 64位,请选择node-v11.15.0-x64.msi。


这里有两个选项

要么升级到吞咽4,要么降级到更早的Node.js版本。


我通过将Node.js版本从12.14.0降级到10.18.0并重新安装Node_modules来解决问题。


如果您正在尝试安装语义ui,并且出现以下错误,请尝试从Node.js.org下载具有最新功能的最新版本的Node.js js(13.5.0)。

此外,您不应该尝试NPM安装语义,而应该将链接(可以从cdnjs链接中找到)添加到index.html文件的头部。


Gulp对Node.js版本11和更高版本提出了问题。卸载当前Node.js版本并重新安装v10.15.1版本。这是该版本的链接。这对我有帮助,也会解决你的问题。

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


TL:博士

Gulp 3.*不适用于Node.js 12.*或更高版本。您必须降级Node.js或升级Gulp。

如果时间不足,请将Node.js降级到v11.*或更低版本;如果您需要更新的功能,并且有时间可能修复大量的依赖关系,请将Gulp升级到4.*或更高版本!

正如其他人已经提到的,Node.js 12或更高版本不支持Gulp 3.*,因此您必须将Node版本降级到11.*或更低,或者将Gulp升级到4.0。

最好的选择最终取决于你有多少时间,因为升级Gulp带来了更干净的Gulp文件的好处,并且内置了对任务串行或并行运行的控制,但也依赖于你将Gulp文件重写为新语法,并且可能(读:可能会-见本评论结尾)导致与某些依赖项的冲突。


降级Node.js

这是最简单快捷的选择。特别是如果您使用n或nvm,因为它们允许您快速安装并在Node.js版本之间切换。

在N上安装Node.js版本

n 10.16.0

在NVM上安装Node.js版本

nvm install 10.16.0

完成此操作后,您可能需要重建npm依赖项,或者删除node_modules文件夹和package-lock.json文件并重新安装依赖项。虽然如果您只是恢复到一个预先存在的Node.js版本,您可能会没事。


升级Gulp

如上所述,这是一项更耗时的任务,但从长远来看可能会带来好处。例如,Node.js 12现在引入了对ES模块的本地支持(在实验标志后面),并在Node.js 13中提供了完全支持。

您可能需要升级Node.js才能使用它,从而迫使您升级Gulp。或者你可能只是想要使用Gulp 4的好处,因为它可以更好、更有效地控制写作任务。

关于这一点,已经有很多文章了,所以我不会再详细说明细节,但要重申,这不是一项快速的工作。根据项目的大小,可能需要一些显著的重写,并且可能会有依赖关系中断。如果时间紧迫,您应该选择简单地降级Node.js,至少暂时如此。


但我已经有了Gulp 4,但它仍然不起作用!

如果像我一样,您已经在使用Gulp 4+(我使用的是Gulp 4.0.2,最初在Node.js 10上),并且最近升级了(我升级到Node.js 13.8.0),那么您仍然会遇到问题,这可能是因为依赖项依赖于旧版本的Gulp,而这正被管道所捕获。

在我的例子中,gulp combine mq是使用gulp 3.9.*的依赖项。在我的gulp文件中禁用此任务允许gulp再次运行。

如果发生这种情况,你有几个选择。你可以,

如果不是绝对必要的话,不使用插件寻找替代方案,修复插件

不用说,如果您有几个插件依赖于旧版本的Gulp,特别是如果这些插件对您的应用程序至关重要,那么升级Gulp可能会花费大量额外的时间(因此上面的警告)。

如果发生这种情况,最好只降级Node.js,至少在发布补丁之前。


我使用的是Node.js v12.13.1,所以我已经降级到v10.19.0。之后一切都很顺利。


这个错误是因为Node.js的新版本(12)和Gulp的旧版本(少于4)。

不建议降级Node.js和其他依赖项。我通过更新package.json文件,获取所有依赖项的最新版本来解决这个问题。为此,我使用npm检查更新。它是一个用所有依赖项的最新版本更新package.json的模块。

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

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

在大多数情况下,我们必须更新gulpfile.js,如下所示:

参考:Gulp 4:新的任务执行系统-Gulp.parallel和gull.series,Migration

之前:

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

            ....
    }
);

Other configuration...

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'));
    }
);

解决问题的步骤:

我已通过以下步骤解决了问题:

安装NVM使用命令nvm install lts/dubnium安装lts/dubinium使用命令nvm install lts/dubnium使用lts/dubinium

现在你可以大口大口地展开了。


这是因为系统中节点和gulf之间的兼容性问题。降级节点或升级gulf将解决此问题。

sudo npm i -g n
sudo n 11.15.0

尝试删除node_modules文件夹和package-lock.json文件,如果仍然无法工作,请使用npm i命令再次安装。


一分钟内修复:

只需遵循以下步骤。我使用的是Windows 10,它非常适合我!

在package.json所在的目录中,创建一个npm-shrinkwrap.json文件,其中包含以下内容:{“相关性”:{“优雅的fs”:{“版本”:“4.2.2”}}}运行npm install,不用担心,它会用一堆内容更新npm-shrinkwrap.json。一口气开始这个项目。


简单优雅的解决方案

只需遵循以下步骤。它与多次运行的npm安装或安装任何其他模块,甚至将项目发布到artifactory,都能完美配合。

在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安装程序,您的npm-shrinkwrap.json将完好无损,并将永远工作。


我在安装npm包webshot时遇到了同样的问题。

注意:这是该软件包的一个已知问题,因为它依赖于幕后优雅的fs。

修复:1。将优雅fs升级到4.x或更高版本

修复:2。改用webshot节点https://www.npmjs.com/package/webshot-node


检查Node.js版本:

 node --version

检查吞咽版本:

gulp -v

如果Node.js>=12,gulf<=3,请执行以下操作之一:

升级gulf

sudo npm install -g gulp

降级节点

sudo npm install -g n
sudo n 11.15.0

如何使用npm升级(或降级)Node.js


如果问题不是由gulp引起的,请检查解压缩的npm模块。自从上次更新以来,已经有六年了。它不适用于Node.js>v11。

试试看:

npm install -g n

sudo n 11.15.0

我已经尝试了很多建议来解决我的Windows 10机器上的现有项目的这个问题,并最终按照这些步骤来解决它;

从“添加或删除程序”中卸载Node.js。启动一个新的命令提示符,键入gulp-v,然后键入node-v,以检查它是否已完全卸载。下载并安装Node.js v10.16.0-不是最新的,因为据我所见,最新的Node&gump组合导致了问题。在安装过程中,我没有像往常一样更改安装路径(C:\Program Files\nodejs)。打开一个新的命令提示符,转到项目的目录,在该目录中获得gulpfile.js,然后开始gulph,如图所示。

请注意,有时当我在git分支之间切换时,我可能需要关闭Visual Studio并再次以管理员身份运行它,以便看到此解决方案再次运行。

据我所知,在我为新项目安装了Node.js的最新推荐版本(12.18.4)后,这个问题就开始出现了,我只是在现有web项目上没有反映某些FE更改时才意识到这一点。

更新:今天,我在新电脑上设置一个现有项目时遇到了同样的问题,我做了同样的步骤+转到我有gulf文件的目录,然后运行npm安装。


由于我的项目使用的是gulf版本4,所以我必须执行以下操作来解决这个问题

删除文件夹node_modules打开package.json并更新版本

以下是我使用的版本的详细信息

现在运行npm-install,然后运行gulp-default。错误应该消失了,您可能会看到:

从未定义任务:仅默认。


我也犯了同样的错误,但它是由另一个问题引起的。

OS: windows 10
nodejs version: 15.12.0
npm version: 7.6.3

问题的原因是优雅的fs包。每当我尝试运行npm时,甚至运行npm-v都会触发“ReferenceError:未定义原始值”。

我尝试运行npm安装graceful-fs@latest,但它仍然不起作用,即使软件包是最新版本。

那是什么帮助了我?

运行npm ls优雅fs

通过这种方式,您可以找到优雅的fs依赖于的所有包及其版本。在我的情况下,大部分是3.0版本,尽管我安装了4.2.6版本

那么如何修复它呢?

打开npm-shrinkwrap.json(不确定packages-lock.json)并更改搜索优雅的fs,您会看到它在一些地方有较旧的版本。将其替换为^4.2.6(或更新版本)。

然后npm审计修复——强制在任何地方强制安装新版本。

希望这对你有用,我花了几个小时才找到修复方法。


安装gulp并将Node.js版本添加到package.json文件中,如下所示:

{
  "dependencies": {
    "node":  "^10.16.3"
  }
}

对我来说,Diego Fortes的答案只需一个小小的改变。

如果出现此错误,以下是我的工作流程:

npm安装npm安装gulf使用创建文件npm-shrinkwrap.json{“相关性”:{“优雅的fs”:{“版本”:“4.2.2”}}}npm-install(再次)(不是npm-install-gulp!非常重要-否则会返回错误)大口大口(正在工作)


对于任何遇到这种情况的人,请确认你没有做过我做的傻事,一百万年前,我无意中在你的用户目录中运行了npm init,并忘记清除这些文件。

我在尝试使用@vue-cli创建一个新项目时发现了这个问题,结果是用户目录根目录中的一个rogue package.json/package-lock.json文件和node_modules文件夹。

解决方案:从用户目录中删除package.json、package-lock.json和node_modules,问题解决了!现在,把手掌从前额上移开!


对我来说,使用series()组合任务后,问题就解决了。

这里的任何答案都没有解决问题。


该问题仅在Visual Studio的任务运行器资源管理器中出现,而不是从命令行或PowerShell运行时出现。

我意识到VS忽略了我用NVM设置的Node版本。

这篇文章给出了答案:配置Visual Studio的Task Runner Explorer使用哪个NPM?通过将PATH变量设置为比VS中的外部工具更高的优先级,它使用的是NVM设置的Node版本,而不是与VS一起安装的版本。


看起来您已经将nodejs的版本升级到+12,并且仍然使用gulf 3.9.1

您可以使用以下解决方案之一

将您的glup版本升级到+4或者简单地使用NVM节点版本管理器在同一台机器上运行多个nodejs版本。


删除package-lock.json或yarn.lock文件。然后删除node_modules。之后,修改package.json文件-“相关性”:{“大口大口”:“^4.0.0”}然后运行-npm install

这将足以解决这个问题。