【问题标题】:Error running Gulpfile from Visual Studio 2015 task runner从 Visual Studio 2015 任务运行器运行 Gulpfile 时出错
【发布时间】:2016-11-02 03:52:16
【问题描述】:

我正在构建一个 gulpfile 以在我的 aps.net winforms 项目中使用。到目前为止,我在 package.json 中有以下内容

{
"version": "1.0.0",
"name": "asp.net",
"private": true,
"devDependencies": {
  "browserify": "^13.1.0",
  "del": "2.2.0",
  "gulp": "^3.9.1",
  "gulp-sourcemaps": "^2.2.0",
  "gulp-typescript": "^3.0.2",
  "tsify": "^2.0.2",
  "vinyl-source-stream": "^1.1.0"
 }
}

gulp 文件有

/// <binding BeforeBuild='default' />
/*
 This file in the main entry point for defining Gulp tasks and using Gulp      plugins.
  Click here to learn more. http://go.microsoft.com/fwlink/?LinkId=518007
*/

var gulp = require('gulp');

var del = require('del');
var ts = require("gulp-typescript");
var tsProject = ts.createProject("tsconfig.json");
var sourcemaps = require('gulp-sourcemaps');

gulp.task('default', function () {
  // place code for your default task here
});

我的节点版本是6.9.1

如果我从命令行('gulp')运行它,它工作正常。但是在 Visual Studio 任务运行程序中,它无法加载,并且在输出中我看到以下错误。这个错误是在我添加var sourcemaps = require('gulp-sourcemaps');这一行之后开始的

 Failed to run "H:\dev\myproj\Gulpfile.js"...
cmd.exe /c gulp --tasks-simple
H:\dev\myproj\node_modules\gulp-sourcemaps\node_modules\strip-bom\index.js:2
module.exports = x => {
                    ^
SyntaxError: Unexpected token >
    at Module._compile (module.js:439:25)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at Object.<anonymous> (H:\dev\myproj\node_modules\gulp-sourcemaps\src\init.js:10:14)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)

同时添加var tsify = require("tsify"); 我又得到一个错误...

Failed to run "H:\dev\myproject\Gulpfile.js"...
cmd.exe /c gulp --tasks-simple
TypeError: Object #<Object> has no method 'debuglog'
    at Object.<anonymous> (H:\dev\myproject\node_modules\tsify\index.js:4:32)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at Object.<anonymous> (H:\dev\myproject\gulpfile.js:17:13)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)

有人知道我为什么会得到这个吗?

提前致谢!

【问题讨论】:

    标签: node.js visual-studio typescript gulp


    【解决方案1】:

    我的问题是我没有意识到 Visual Studio 有它自己的(过时的)节点工具版本(安装在 Visual Studio 文件夹中的某个地方)。多么不整洁!

    要使其使用“全局”节点工具,我可以转到菜单 工具 |选项 |项目和解决方案 |外部 Web 工具 并将 $(PATH) 移动到 $(DevEnvDir)\* 位置之前。完成此操作后,我的 Gulp 文件将加载。

    另一个选项可能是通过 Tools | 更新 Visual Studio 节点工具。扩展和更新,但(我认为)我更喜欢使用我将在 Visual Studio 之外使用的相同外部工具。

    【讨论】:

      【解决方案2】:

      在对我进行了一些调查后,我遇到了同样的问题,这似乎是你的 nodejs 安装和你的包依赖“strip-bom”之间的版本兼容性问题。

      一个临时修复是从:

      module.exports = x => {
      

      到:

      module.exports = function (x) {
      

      您可能想检查一下: Gulp-Sourcemaps, SyntaxError: Unexpected token >

      这似乎解决了我的问题,但不是一个很好的方法。


      问题是您可能正在运行旧版本的节点。尝试使用命令node -vnodejs -v 来检查您的版本。

      虽然这可能不是你的情况,但对于其他人来说非常棒,但 Debian/Ubuntu 实际上在其包管理器“apt-get”上有一个过时的节点版本。所以很有可能您仍在运行旧版本,例如 0.10.25。

      我推荐的真正解决方法(我最终做了)是升级您的节点版本。截至目前,6.9.1 版似乎是最新的稳定版。

      你可以在这里查看nodejs官网的安装指南:

      https://nodejs.org/en/download/package-manager/#debian-and-ubuntu-based-linux-distributions

      【讨论】:

      • 我有节点版本 6.9.1
      • 虽然 VS 可能正在使用其他版本? (6.9.1 来自命令行运行)
      猜你喜欢
      • 2015-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多