0

Warning: undefined is not a function Use --force to continue.尝试运行 html-grunt-build 时出现错误。以下是更多信息,任何帮助将不胜感激:

$ grunt htmlbuild  --verbose
Initializing
Command-line options: --verbose

Reading "Gruntfile.js" Gruntfile...OK

Registering Gruntfile tasks.
Initializing config...OK
Loading "Gruntfile.js" tasks...OK
+ build, default

Running tasks: htmlbuild

Loading "grunt-html-build" plugin

Registering "/home/path/node_modules/grunt-html-build/tasks" tasks.
Loading "build-html.js" tasks...OK
+ htmlbuild

Running "htmlbuild" task

Running "htmlbuild:dist" (htmlbuild) task
Verifying property htmlbuild.dist exists in config...OK
Files: path/to/css/css.html -> path/to/css/css.html
Options: beautify=false, logOptionals=false, relative, scripts={}, styles={"critical":"path/to/css/critical.css"}, sections={}, data={}, parseTag="build"
Reading path/to/css/css.html...OK
Reading path/to/css/critical.css...OK
Warning: undefined is not a function Use --force to continue.

Aborted due to warnings.

我的 Grunt 配置(我正在使用 load-grunt-config 所以它存储在一个单独的文件中):

module.exports = function(grunt, options) {
    return {
        dist: {
            src: 'path/to/css/css.html',
            dest: 'path/to/css/css.html',
            options: {
                styles: {
                    critical: 'path/to/css/critical.css'
                }
            }
        }
    };
};

更详细的错误:

TypeError: undefined is not a function
    at Object.validators.validate (/home/node_modules/grunt-html-build/tasks/build-html.js:196:44)
    at /home/node_modules/grunt-html-build/tasks/build-html.js:245:39
    at Array.forEach (native)
    at transformContent (/home/node_modules/grunt-html-build/tasks/build-html.js:242:14)
    at /home/node_modules/grunt-html-build/tasks/build-html.js:306:27
    at Array.forEach (native)
    at /home/node_modules/grunt-html-build/tasks/build-html.js:295:22
    at Array.forEach (native)
    at Object.<anonymous> (/home/node_modules/grunt-html-build/tasks/build-html.js:291:20)
    at Object.<anonymous> (/home/node_modules/grunt/lib/grunt/task.js:264:15)
4

2 回答 2

0

所以问题是我在同一个 HTML 文件中使用了 grunt-usemin和grunt-html-build。

grunt-html-build 看到了我的构建标签:

<!-- build:css path/to/css/ie8.min.css -->
    <link rel="stylesheet" href="path/to/css/ie8.css"> 
    <link rel="stylesheet" href="path/to/css/print-new.css" media="print">
<!-- endbuild --> 

而且它不知道如何处理build:css

为了解决这个问题,我将这两个文件分成不同的 HTML 包含,以便任务可以单独运行。

于 2015-04-20T10:50:10.883 回答
0

将 lodash 从 3.x 升级到 4.x 后,我开始遇到同样的问题

将 lodash 降级到 3.x 为我修复了它,因此它似乎是与 grunt-usemin 和 lodash 4.x 的兼容性问题

于 2016-03-04T00:11:40.263 回答