Visual Studio Task Runner Explorer - ReferenceError:未定义原始值

Mic*_*ick 3 visual-studio npm gulp visual-studio-2019

所以我已经升级到 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)
Run Code Online (Sandbox Code Playgroud)

然后我用谷歌搜索发现这是由于节点 12 和 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: '=='
Run Code Online (Sandbox Code Playgroud)

我在谷歌上搜索了这个,建议是将 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"
  }
}
Run Code Online (Sandbox Code Playgroud)

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

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

Ser*_*gan 12

我发现,没有一个解决方案要求降级节点一饮而尽信用

创建一个npm-shrinkwrap.json与您的级别相同package.json的文件,并使用以下内容填充该文件:

{
    "dependencies": {
        "graceful-fs": {
            "version": "4.2.2"
       }
    }
}
Run Code Online (Sandbox Code Playgroud)

现在删除该node_modules文件夹并npm install在同一文件夹中运行,您现在应该很好。(刷新在Task Runner ExplorerVisual Studio)。


Chr*_*row 5

当自动化任务运行程序运行我设置为在解决方案构建时运行的 gulp 任务时,我在 Visual Studio 2022 中遇到了这个问题。Visual Studio 附带了自己的 Node.js 版本,默认情况下用于任务运行程序资源管理器,我需要将 Visual Studio 配置为使用我已安装的节点版本。

\n

Joe Davis(Web 工具,Microsoft)的答案解释了如何做到这一点:

\n
\n

Visual Studio 附带了自己的 Node.js 版本,默认情况下用于任务运行程序资源管理器。如果您的计算机上安装了不同版本的 Node.js,则可以通过更改“工具”->“选项”->“项目和解决方案”->“Web 包管理”中的设置来使用该版本。将 \xe2\x80\x9c$(PATH)\xe2\x80\x9d 移动到 \xe2\x80\x9c外部工具位置:\xe2\x80\x9d 列表框中的列表顶部。

\n
\n

在此输入图像描述

\n