从Visual Studio 2015任务运行程序

时间:2016-11-02 03:52:16

标签: node.js visual-studio typescript gulp

我正在构建一个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)

任何人都有任何想法,为什么我得到这个?

提前致谢!

2 个答案:

答案 0 :(得分:5)

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

使其使用&#34; global&#34;节点工具,我可以进入菜单工具|选项|项目和解决方案|外部网络工具并将 file { path => "file://XXX.YYY.ZZZ.WWW/Archive/*" } 移至$(PATH)位置之前。在我这样做之后,我的Gulp文件会加载。

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

答案 1 :(得分:0)

在面对同样的问题与我进行一些调查之后,你的nodejs install和你的包依赖“strip-bom”之间的版本兼容性似乎有问题。

adhoc修正方法是改变:

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