我正在使用由yeoman的gulp-webapp生成器生成的gulpfile.js
,并由我稍微修改以满足我的需求。出于某种原因,当我尝试运行构建过程(默认任务)时,我一直遇到问题。在' html'期间抛出了错误。任务和大多数错误引用都在`node_modules \ gulp-useref \ index.js'。
以下是错误输出:
stream.js:94
throw er; //Unhandled stream in pipe.
TypeError: path must be a string
at Object.fs.openSync (fs.js:427:18)
at Object.fs.readFileSync (fs.js:284:15)
at Transform.<anonymous> (C:\dev\project\node_modules\gulp-useref\index.js:54:44)
at Array.forEach (native)
at Transform.<anonymous> (C:\dev\project\node_modules\gulp-useref\index.js:50:31)
at Array.forEach (native)
at Transform.<anonymous> (C:\dev\project\node_modules\gulp-useref\index.js:41:36)
at Array.forEach (native)
at Transform._transform (C:\dev\project\node_modules\gulp-useref\index.js:38:23)
at Transform._read (C:\dev\project\node_modules\gulp-useref\node_modules\through2\node_modules\readable-stream\lib\_stream_transform.js:184:10)
at Transform._write (C:\dev\project\node_modules\gulp-useref\node_modules\through2\node_modules\readable-stream\lib\_stream_transform.js:172:12)
这是HTML任务:
gulp.task('html', ['styles', 'scripts'], function () {
var jsFilter = $.filter('**/*.js');
var cssFilter = $.filter('**/*.css');
return gulp.src(['app/**/*.html','app/**/*.php'])
.pipe($.useref.assets())
.pipe(jsFilter)
.pipe($.uglify())
.pipe(jsFilter.restore())
.pipe(cssFilter)
.pipe($.csso())
.pipe(cssFilter.restore())
.pipe($.useref.restore())
.pipe($.useref())
.pipe(gulp.dest('dist'))
.pipe($.size());
});
答案 0 :(得分:7)
简短回答:TypeError: path must be a string
表示链接/脚本路径存在问题。 useref无法找到您指向它的文件或目录。
答案很长:
我遇到了两个问题。
<!-- build:css /styles/main.css --> <link href="app/styles/base.css"> <link href="app/styles/article.css"> <!-- endbuild -->
OR
<!-- build:css(app) /styles/main.css --> <link href="/styles/base.css"> <link href="/styles/article.css"> <!-- endbuild -->
<!-- build:css({.temp,app}) /styles/main.css --> Works
但是如果你只有一个alt目录而你把它留在花括号中会引发错误。
<!-- build:css({app}) /styles/main.css --> TypeError: path must be a string
这是因为它正在将路径读为C:\path\to\project\{app}\styles\style.css
。这对我来说似乎很奇怪。我认为无论长度如何,它都会遍历大括号中列出的目录。