Webpack warnings about parsing .hh/.cc files #535

Closed
opened 2017-04-30 12:58:35 -07:00 by chrisregnier · 0 comments
chrisregnier commented 2017-04-30 12:58:35 -07:00 (Migrated from github.com)

I've been getting a bunch of warnings in webpack about parsing the .hh and .cc files in the javascript source. Example:

    WARNING in ./~/yoga-layout/sources/entry-common.js
    Critical dependencies:
    26:7-27 the request of a dependency is an expression
     @ ./~/yoga-layout/sources/entry-common.js 26:7-27
    
    WARNING in ./~/yoga-layout/sources/Layout.hh
    Module parse failed: C:\projects\proj\node_modules\yoga-layout\sources\Layout.hh Unexpected character '#' (10:0)
    You may need an appropriate loader to handle this file type.
    SyntaxError: Unexpected character '#' (10:0)
        at Parser.pp$4.raise (C:\projects\proj\node_modules\webpack\node_modules\acorn\dist\acorn.js:2221:15)
        at Parser.pp$7.getTokenFromCode (C:\projects\proj\node_modules\webpack\node_modules\acorn\dist\acorn.js:2756:10)
        at Parser.pp$7.readToken (C:\projects\proj\node_modules\webpack\node_modules\acorn\dist\acorn.js:2477:17)
        at Parser.pp$7.nextToken (C:\projects\proj\node_modules\webpack\node_modules\acorn\dist\acorn.js:2468:15)
        at Parser.parse (C:\projects\proj\node_modules\webpack\node_modules\acorn\dist\acorn.js:515:10)
        at Object.parse (C:\projects\proj\node_modules\webpack\node_modules\acorn\dist\acorn.js:3098:39)
        at Parser.parse (C:\projects\proj\node_modules\webpack\lib\Parser.js:902:15)
        at NormalModule.<anonymous> (C:\projects\proj\node_modules\webpack\lib\NormalModule.js:104:16)
        at NormalModule.onModuleBuild (C:\projects\proj\node_modules\webpack-core\lib\NormalModuleMixin.js:310:10)
        at nextLoader (C:\projects\proj\node_modules\webpack-core\lib\NormalModuleMixin.js:275:25)
        at C:\projects\proj\node_modules\webpack-core\lib\NormalModuleMixin.js:259:5
        at Storage.finished (C:\projects\proj\node_modules\enhanced-resolve\lib\CachedInputFileSystem.js:38:16)
        at C:\projects\proj\node_modules\graceful-fs\graceful-fs.js:78:16
        at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:416:3)
     @ ./~/yoga-layout/sources ^\.\/.*$

Turns out one of entry-common.js's requires is using an expression statement and doesn't need to. Doing so causes webpack to do a dynamic lookup, leading to it doing a general parse of ./~/yoga-layout/sources ^\.\/.*$ which ends up including the .hh/.cc.

Easy fix, just need to change the expression statement to a static string.

I've been getting a bunch of warnings in webpack about parsing the .hh and .cc files in the javascript source. Example: ``` WARNING in ./~/yoga-layout/sources/entry-common.js Critical dependencies: 26:7-27 the request of a dependency is an expression @ ./~/yoga-layout/sources/entry-common.js 26:7-27 WARNING in ./~/yoga-layout/sources/Layout.hh Module parse failed: C:\projects\proj\node_modules\yoga-layout\sources\Layout.hh Unexpected character '#' (10:0) You may need an appropriate loader to handle this file type. SyntaxError: Unexpected character '#' (10:0) at Parser.pp$4.raise (C:\projects\proj\node_modules\webpack\node_modules\acorn\dist\acorn.js:2221:15) at Parser.pp$7.getTokenFromCode (C:\projects\proj\node_modules\webpack\node_modules\acorn\dist\acorn.js:2756:10) at Parser.pp$7.readToken (C:\projects\proj\node_modules\webpack\node_modules\acorn\dist\acorn.js:2477:17) at Parser.pp$7.nextToken (C:\projects\proj\node_modules\webpack\node_modules\acorn\dist\acorn.js:2468:15) at Parser.parse (C:\projects\proj\node_modules\webpack\node_modules\acorn\dist\acorn.js:515:10) at Object.parse (C:\projects\proj\node_modules\webpack\node_modules\acorn\dist\acorn.js:3098:39) at Parser.parse (C:\projects\proj\node_modules\webpack\lib\Parser.js:902:15) at NormalModule.<anonymous> (C:\projects\proj\node_modules\webpack\lib\NormalModule.js:104:16) at NormalModule.onModuleBuild (C:\projects\proj\node_modules\webpack-core\lib\NormalModuleMixin.js:310:10) at nextLoader (C:\projects\proj\node_modules\webpack-core\lib\NormalModuleMixin.js:275:25) at C:\projects\proj\node_modules\webpack-core\lib\NormalModuleMixin.js:259:5 at Storage.finished (C:\projects\proj\node_modules\enhanced-resolve\lib\CachedInputFileSystem.js:38:16) at C:\projects\proj\node_modules\graceful-fs\graceful-fs.js:78:16 at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:416:3) @ ./~/yoga-layout/sources ^\.\/.*$ ``` Turns out one of [entry-common.js's requires](https://github.com/facebook/yoga/blob/master/javascript/sources/entry-common.js#L26) is using an expression statement and doesn't need to. Doing so causes webpack to do a dynamic lookup, leading to it doing a general parse of `./~/yoga-layout/sources ^\.\/.*$` which ends up including the .hh/.cc. Easy fix, just need to change the expression statement to a static string.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: DaddyFrosty/yoga#535
No description provided.