Gulp错误 - '没有指定路径!不能得到亲戚。'

时间:2017-01-03 15:10:10

标签: gulp

我在Visual Studio 2013的项目中使用了Gulp。

我将所有项目都移到了新的开发机器上。在项目中我使用Gulp。这是我在gulpfile.js中的任务:

    config = {
        scripts: {
            src: "./app",
            destination: "./scripts/app"
        },
        templates: {
            src: "./app/**/*.tmpl.html",
            destination: "./scripts/app",
            filename: "templates"
        },
        build: {
            src: "./scripts/app/*.js",
            destination: "./scripts/build",
            filename: "dashboard-build"
        }
    }

  gulp.task("templates", function () {
    gulp.src(config.templates.src)
        .pipe(html2js({
            outputModuleName: "templates",
            useStrict: true
        }))
        .pipe(concat(config.templates.filename + ".js"))
        .pipe(gulp.dest(config.templates.destination))
});

当我尝试触发任务命令提示符窗口时,出现此错误:

C:\Development\Repositories\Tambaound\Tambaound.Web>gulp templates
[17:04:59] Using gulpfile C:\Development\Repositories\Tambaound\Tambaound.Web\gulpfile.js
[17:04:59] Starting 'templates'...
[17:04:59] Finished 'templates' after 12 ms
C:\Development\Repositories\Tambaound\Tambaound.Web\node_modules\gulp-html2js\node_modules\gulp-util\node_modules\vinyl\index.js:120
    if (!this.path) throw new Error('No path specified! Can not get relative.');
                    ^

Error: No path specified! Can not get relative.
    at File.get (C:\Development\Repositories\Tambaound\Tambaound.Web\node_modules\gulp-html2js\node_modules\gulp-util\node_modules\vinyl\index.js:120:27)
    at Stream.bufferContents (C:\Development\Repositories\Tambaound\Tambaound.Web\node_modules\gulp-concat\index.js:35:20)
    at Stream.stream.write (C:\Development\Repositories\Tambaound\Tambaound.Web\node_modules\gulp-concat\node_modules\through\index.js:26:11)
    at DestroyableTransform.ondata (C:\Development\Repositories\Tambaound\Tambaound.Web\node_modules\gulp-html2js\node_modules\through2\node_modules\readable-stream\lib\_stream_readable.js:531:20)
    at emitOne (events.js:96:13)
    at DestroyableTransform.emit (events.js:188:7)
    at readableAddChunk (C:\Development\Repositories\Tambaound\Tambaound.Web\node_modules\gulp-html2js\node_modules\through2\node_modules\readable-stream\lib\_stream_readable.js:198:18)
    at DestroyableTransform.Readable.push (C:\Development\Repositories\Tambaound\Tambaound.Web\node_modules\gulp-html2js\node_modules\through2\node_modules\readable-stream\lib\_stream_readable.js:157:10)
    at DestroyableTransform.Transform.push (C:\Development\Repositories\Tambaound\Tambaound.Web\node_modules\gulp-html2js\node_modules\through2\node_modules\readable-stream\lib\_stream_transform.js:123:32)
    at DestroyableTransform._flush (C:\Development\Repositories\Tambaound\Tambaound.Web\node_modules\gulp-html2js\index.js:75:14)

在我的旧机器上,所有工作都很完美,新开发机器上的所有其他任务都能正常工作。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

您可能在这两台计算机上使用不同版本的scanf("%c", a); switch(a) { case'+': add(stack); break; case '-': sub(stack); break; case 'number': push(stack, a); break; ...}

以下是直接来自gulp-html2js的{​​{3}}的示例:

gulp-html2js

这看起来非常像您尝试使用的代码。

然而,这是README.md for v0.3.1(最新版本)中的相同示例:

gulp.src('templates/*.html')
  .pipe(html2js({
     outputModuleName: 'template-test',
     useStrict: true,
     target: 'js'
  }))

注意区别? gulp.src('templates/*.html') .pipe(html2js('angular.js', { adapter: 'angular', base: 'templates', name: 'angular-demo' })) 选项似乎已重命名为ouputModuleName。此外,name的第一个参数现在是新模块的文件名。您的代码遗失了,而且这会导致html2js()错误。

通常这样的事情不应该发生。模块应遵循README.md for v0.4.2,并且只应在主要版本更改中引入这样的更改。但是v0.x.x Semantic Versioning

  

主要版本零(0.y.z)用于初始开发。任何事情都可能随时改变。公共API不应被视为稳定。

您有两种选择:

  1. 确保在旧计算机上安装了相同版本的No path specified!。使用v0.3.1应该这样做:

    gulp-html2js
  2. 将您的任务调整为上面版本0.4.2的示例中的任务。 is exempt from this rule可以为您提供帮助。

  3. (您可能还需要考虑使用README for that version,这是一个竞争插件,似乎在执行相同的任务,但下载次数约为其三倍。)