Gulp Task Error: 'Checksum error in glyf'

2019-02-16 03:25发布

问题:

I am attempting to run a Gulp task and I get an error that I have no idea how to fix or even debug. The Gulp file and tasks have been created by NetSuite and haven't been editted by myself (they should work out of the box).

Any idea what node package could be causing the following error and how I can fix the error? Maybe I need to use a different version of SASS or Font-Awesome?

C:\Users\MyUser\SuiteCommerce Advanced Mont Blanc>gulp local   
[08:48:45] Warning: gulp version mismatch:   
[08:48:45] Global gulp is 3.9.1   
[08:48:45] Local gulp is 3.8.7   
[08:48:53] Using gulpfile ~\SuiteCommerce Advanced Mont Blanc\gulpfile.js   
(node:1372) DeprecationWarning: 'GLOBAL' is deprecated, use 'global'   
[08:48:53] Starting 'local-install'...   
[08:48:53] Finished 'local-install' after 79 μs   
[08:48:53] Starting 'templates'...   
[08:48:53] Starting 'macros-jst'...   
[08:48:53] Finished 'macros-jst' after 242 μs   
[08:48:53] Starting 'macros'...   
[08:48:53] Starting 'javascript-entrypoints'...   
[08:48:53] Finished 'javascript-entrypoints' after 13 ms   
[08:48:53] Starting 'javascript-move'...   
[08:48:53] Starting 'copy'...   
[08:48:53] Starting 'less'...   
[08:48:53] Finished 'less' after 364 μs   
[08:48:53] Starting 'sass-prepare'...   
[08:48:53] Starting 'languages'...   
[08:48:53] Starting 'images'...   
[08:48:53] Starting 'fonts'...   
[08:48:53] Finished 'fonts' after 386 μs   
[08:48:53] Starting 'watch-templates'...   
[08:48:53] Finished 'watch-templates' after 335 ms   
[08:48:53] Starting 'watch-macros'...   
[08:48:53] Finished 'watch-macros' after 610 μs   
[08:48:53] Starting 'watch-javascript'...   
[08:48:54] Finished 'watch-javascript' after 580 ms   
[08:48:54] Starting 'watch-less'...   
[08:48:54] Finished 'watch-less' after 459 μs   
[08:48:54] Starting 'watch-sass'...   
[08:48:55] Finished 'watch-sass' after 1.5 s   
[08:48:55] Starting 'watch-languages'...   
[08:48:55] Finished 'watch-languages' after 88 ms   
[08:48:55] Starting 'watch-fonts'...   
[08:48:56] Finished 'watch-fonts' after 365 μs   
[08:48:56] Starting 'watch-images'...   
[08:48:56] Finished 'watch-images' after 41 ms   
[08:48:56] Finished 'copy' after 2.63 s   
[08:48:56] Finished 'macros' after 2.71 s   
[08:48:57] Finished 'javascript-move' after 4.15 s   
[08:49:02] Finished 'images' after 9.11 s   
[08:49:06] Finished 'languages' after 13 s   
[08:49:07] Finished 'templates' after 14 s   
[08:49:07] Starting 'javascript'...   
[08:49:12] Finished 'sass-prepare' after 19 s   
[08:49:12] Starting 'generate-sass-index'...   
[08:49:12] Finished 'generate-sass-index' after 118 ms   
[08:49:12] Starting 'sass'...   
[08:49:12] Finished 'javascript' after 4.99 s   
[08:49:12] Starting 'clean-templates'...   
[08:49:12] Finished 'clean-templates' after 12 μs   
[08:49:13] SOURCE CODE ERROR   
[08:49:13] status 1   
[08:49:13] file C:/Users/MyUser/SuiteCommerce Advanced Mont Blanc/LocalDistribution/sass/twitter-bootstrap-sass/mixins/_grid-framework.scss   
[08:49:13] line 11   
[08:49:13] column 245   
[08:49:13] message LocalDistribution\sass\twitter-bootstrap-sass\mixins\_grid-framework.scss   
Error: You may not @extend an outer selector from within @media.   
       You may only @extend selectors within the same directive.   
       From "@extend .col-md-6" on line 134 of LocalDistribution/sass/ItemDetails/_item-details.scss   
        on line 11 of LocalDistribution/sass/twitter-bootstrap-sass/mixins/_grid-framework.scss   
>>   
[08:49:13] formatted Error: You may not @extend an outer selector from within @media.   
       You may only @extend selectors within the same directive.   
       From "@extend .col-md-6" on line 134 of LocalDistribution/sass/ItemDetails/_item-details.scss   
        on line 11 of LocalDistribution/sass/twitter-bootstrap-sass/mixins/_grid-framework.scss   
>>   
[08:49:13] messageFormatted LocalDistribution\sass\twitter-bootstrap-sass\mixins\_grid-framework.scss   
Error: You may not @extend an outer selector from within @media.   
       You may only @extend selectors within the same directive.   
       From "@extend .col-md-6" on line 134 of LocalDistribution/sass/ItemDetails/_item-details.scss   
        on line 11 of LocalDistribution/sass/twitter-bootstrap-sass/mixins/_grid-framework.scss   
>>   
[08:49:13] name Error   
[08:49:13] stack Error: LocalDistribution\sass\twitter-bootstrap-sass\mixins\_grid-framework.scss   
Error: You may not @extend an outer selector from within @media.   
       You may only @extend selectors within the same directive.   
       From "@extend .col-md-6" on line 134 of LocalDistribution/sass/ItemDetails/_item-details.scss   
        on line 11 of LocalDistribution/sass/twitter-bootstrap-sass/mixins/_grid-framework.scss   
>>   
    at options.error (C:\Users\MyUser\SuiteCommerce Advanced Mont Blanc\node_modules\node-sass\lib\index.js:286:26)   
[08:49:13] showStack false   
[08:49:13] showProperties true   
[08:49:13] plugin gulp-sass   
[08:49:13] Finished 'sass' after 954 ms   
[08:49:13] Starting 'font-awesome'...   
[08:49:13] Starting 'clean-sass-tmp'...   
[08:49:13] Finished 'clean-sass-tmp' after 5.57 μs   

events.js:160   
      throw er; // Unhandled 'error' event   
      ^   
Error: Checksum error in glyf   

回答1:

It looks like you have node > v4 installed.

If you haven't run npm install since updating node you'll need to do that so SASS get's a new executable. Running npm install may fix your issue then gulp clean and gulp local.

Due to how often I see errors just running gulp local I generally run these as a single command:

gulp clean && gulp local

However I also go through and fix all those issues in the Netsuite's SASS files. Almost all of them are due to overspecification and I haven't seen any issues caused by fixing them.

e.g. From NS

.item-details-main {
    @media (min-width: $screen-md-min) {
        @extend .col-md-4;
    }
}

behaves pretty much the same as:

.item-details-main {
    @extend .col-md-4;
}


回答2:

This error happens because SCA uses gulp-sass for compiling SCSS files. After Mont Blanc was released, node-sass, which is a dependency of gulp-sass was updated causing errors with SCSS files that were previously compiled.

There is no a fix for this issue without modifying SCSS files which throw fatal errors, but there is a workaround:

  1. Uninstalling the gulp-sass package
  2. Installing node-sass at 3.4.1 as a first-level dependency of the dev tools.
  3. Reinstalling gulp-sass

In order to do this, run the following commands:

npm cache clear
npm uninstall gulp-sass node-sass
npm config set save-exact true
npm install --save node-sass@3.4.1 gulp-sass@2.1.0