Visual Studio Task Runner Explorer - ReferenceError: primordials is not defined

Posted

技术标签:

【中文标题】Visual Studio Task Runner Explorer - ReferenceError: primordials is not defined【英文标题】: 【发布时间】:2020-10-24 02:13:39 【问题描述】:

所以我已经升级到 Visual Studio 16.6.3。当我转到 Task Runner Explorer 时,它不会加载我的 gulp 文件,在 Task Runner 输出窗口中我可以看到...

Failed to run "E:\Projects\...\Gulpfile.js"...
cmd.exe /c gulp --tasks-simple
fs.js:35
 = primordials;
    ^
ReferenceError: primordials is not defined
    at fs.js:35:5
    at req_ (E:\Projects\...\node_modules\natives\index.js:143:24)
    at Object.req [as require] (E:\Projects\...\node_modules\natives\index.js:55:10)
    at Object.<anonymous> (E:\Projects\...\node_modules\graceful-fs\fs.js:1:37)
    at Module._compile (internal/modules/cjs/loader.js:1158:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1178:10)
    at Module.load (internal/modules/cjs/loader.js:1002:32)
    at Function.Module._load (internal/modules/cjs/loader.js:901:14)
    at Module.require (internal/modules/cjs/loader.js:1044:19)
    at require (internal/modules/cjs/helpers.js:77:18)

然后我在谷歌上发现这是由于 incompatibility between node 12 and gulp 3 建议升级到版本 4。所以我更新了我的 package.json 文件并将“gulp”:“3.9.1”更改为“gulp”:“ 4.0.2"。当我转到任务资源管理器时,我在 Task Runner 输出窗口中看到以下内容...

Failed to run "E:\Projects\...\Gulpfile.js"...
cmd.exe /c gulp --tasks-simple
AssertionError [ERR_ASSERTION]: Task function must be specified
    at Gulp.set [as _setTask] (E:\Projects\...\node_modules\undertaker\lib\set-task.js:10:3)
    at Gulp.task (E:\Projects\...\node_modules\undertaker\lib\task.js:13:8)
    at Object.<anonymous> (E:\Projects\...\gulpfile.js:86:6)
    at Module._compile (internal/modules/cjs/loader.js:1158:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1178:10)
    at Module.load (internal/modules/cjs/loader.js:1002:32)
    at Function.Module._load (internal/modules/cjs/loader.js:901:14)
    at Module.require (internal/modules/cjs/loader.js:1044:19)
    at require (internal/modules/cjs/helpers.js:77:18)
    at requireOrImport (E:\Projects\...\node_modules\gulp\node_modules\gulp-cli\lib\shared\require-or-import.js:19:11) 
  generatedMessage: false,
  code: 'ERR_ASSERTION',
  actual: false,
  expected: true,
  operator: '=='

我在谷歌上搜索了一下,建议将 gulp 降级到版本 3...只要我想打开 Task Runner Explorer 而不是花 4 小时尝试解决依赖问题。

同时从 Visual Studio 内的 Visual Studio 包管理器控制台运行“npm install”(提升与否)似乎只会导致一堆权限错误。我只能从提升的 powershell 窗口成功运行 npm install。

谁有解决这些问题的办法?

Package.json如下...


  "version": "1.0.0",
  "name": "asp.net",
  "private": true,
  "devDependencies": 
    "del": "4.1.1",
    "gulp": "3.9.1",
    "gulp-concat": "^2.6.1",
    "gulp-config": "0.3.0",
    "gulp-cssmin": "^0.2.0",
    "gulp-csso": "1.1.0",
    "gulp-htmlmin": "5.0.1",
    "gulp-imagemin": "2.4.0",
    "gulp-less": "4.0.1",
    "gulp-plumber": "1.2.1",
    "gulp-uglify": "3.0.2",
    "gulp.spritesmith": "^6.10.0",
    "merge-stream": "2.0.0",
    "vinyl-buffer": "1.0.1"
  

编辑:尝试将 Node 从 12.6.2 升级到 12.18.2,但未成功。

编辑:尝试从 Node 12.6.2 升级到 14.5.0,但没有成功。

【问题讨论】:

“建议是将 gulp 降级到版本 3”——这是个坏建议。 Task function must be specified 是从 gulp v3 迁移到 gulp v4 导致的常见错误,通常很容易修复。但是你必须出示你的 gulp v4 gulpfile.js 以获得进一步的帮助。 【参考方案1】:

我找到的解决方案是降级到 NodeJs v11.15.0 并使用 gulp 3.9.1。

如果有人有更好的选择,我很想听。

【讨论】:

【参考方案2】:

我找到了一个不需要需要降级nodegulp的解决方案,credit。

在与package.json 相同的级别创建一个名为npm-shrinkwrap.json 的文件,并用此内容填充文件:


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

现在删除node_modules 文件夹并在同一文件夹中运行npm install,您现在应该可以了。 (Reload 中的Task Runner Explorer 中的Visual Studio。)

【讨论】:

如果其他人可以验证这是一个答案,我会这样标记它 有机会在设置新机器时测试您的答案,并且可以验证您指定的步骤是否有效。 对我有用,谢谢一直在寻找这个。

以上是关于Visual Studio Task Runner Explorer - ReferenceError: primordials is not defined的主要内容,如果未能解决你的问题,请参考以下文章

如何在Visual Studio Test Runner中排除某些测试?

Visual Studio 中的 std::packaged_task 错误?

如何用visual studio code调试javascript

[Windows]Visual Studio Code个人配置

使用 Visual Studio 进行 Scrapy 调试

Visual Studio 2019 编译.Net Core Console项目出现MSB4018 The "CreateAppHost" task failed unexpec(