Skip to content

Build breaks on Windows with ~ font paths relative to node_modules (working on OSX/Linux) #9154

Closed
@sinedied

Description

@sinedied

Versions

Angular CLI: 1.6.3
Node: 8.4.0
OS: win32 x64 (windows 10)
Angular: 5.1.3
... animations, common, compiler, compiler-cli, core, forms
... http, language-service, platform-browser
... platform-browser-dynamic, router, service-worker

@angular/cli: 1.6.3
@angular-devkit/build-optimizer: 0.0.36
@angular-devkit/core: 0.0.22
@angular-devkit/schematics: 0.0.42
@ngtools/json-schema: 1.1.0
@ngtools/webpack: 1.9.3
@schematics/angular: 0.1.11
@schematics/schematics: 0.0.11
typescript: 2.5.3
webpack: 3.10.0

Repro steps

When using Sass and a lib that includes fonts, like FontAwesome, override the font path variable to a tilde-based one like this:

$fa-font-path: "~font-awesome/fonts";

Here is a repository to reproduce the bug: https://github.com/ngx-rocket/starter-kit/tree/cli-bug-tilde

  1. git clone the repo and checkout the cli-bug-tilde branch
  2. npm install
  3. npm start

Observed behavior

On Windows, the build process breaks badly with Sass when font paths variables use ~ for paths relative to node_modules folder. Same projects builds fine on OSX or Linux.

Here is the complete error (I omitted the warnings of postcss-loader, see #8781 (comment)):

ERROR in ./node_modules/css-loader?{"sourceMap":false,"importLoaders":1}!./node_modules/postcss-loader/lib?{"ident":"postcss","sourceMap":false}!./node_modules/sass-loader/lib/loader.js?{"sourceMap":false,"precision":8,"includePaths":[]}!./src/main.scss
Module not found: Error: Can't resolve './C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.eot' in 'C:\node\ngbug\src'
resolve './C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.eot' in 'C:\node\ngbug\src'
  using description file: C:\node\ngbug\package.json (relative path: ./src)
    Field 'browser' doesn't contain a valid alias configuration
  after using description file: C:\node\ngbug\package.json (relative path: ./src)
    using description file: C:\node\ngbug\package.json (relative path: ./src/C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.eot)
      no extension
        Field 'browser' doesn't contain a valid alias configuration
        C:\node\ngbug\src\C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.eot doesn't exist
      .ts
        Field 'browser' doesn't contain a valid alias configuration
        C:\node\ngbug\src\C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.eot.ts doesn't exist
      .js
        Field 'browser' doesn't contain a valid alias configuration
        C:\node\ngbug\src\C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.eot.js doesn't exist
      as directory
        C:\node\ngbug\src\C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.eot doesn't exist
[C:\node\ngbug\src\C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.eot]
[C:\node\ngbug\src\C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.eot.ts]
[C:\node\ngbug\src\C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.eot.js]
[C:\node\ngbug\src\C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.eot]
 @ ./node_modules/css-loader?{"sourceMap":false,"importLoaders":1}!./node_modules/postcss-loader/lib?{"ident":"postcss","sourceMap":false}!./node_modules/sass-loader/lib/loader.js?{"sourceMap":false,"precision":8,"includePaths":[]}!./src/main.scss 6:183261-183352
 @ ./src/main.scss
 @ multi ./src/main.scss
ERROR in ./node_modules/css-loader?{"sourceMap":false,"importLoaders":1}!./node_modules/postcss-loader/lib?{"ident":"postcss","sourceMap":false}!./node_modules/sass-loader/lib/loader.js?{"sourceMap":false,"precision":8,"includePaths":[]}!./src/main.scss
Module not found: Error: Can't resolve './C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.eot?v=4.7.0' in 'C:\node\ngbug\src'
resolve './C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.eot?v=4.7.0' in 'C:\node\ngbug\src'
  using description file: C:\node\ngbug\package.json (relative path: ./src)
    Field 'browser' doesn't contain a valid alias configuration
  after using description file: C:\node\ngbug\package.json (relative path: ./src)
    using description file: C:\node\ngbug\package.json (relative path: ./src/C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.eot)
      no extension
        Field 'browser' doesn't contain a valid alias configuration
        C:\node\ngbug\src\C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.eot doesn't exist
      .ts
        Field 'browser' doesn't contain a valid alias configuration
        C:\node\ngbug\src\C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.eot.ts doesn't exist
      .js
        Field 'browser' doesn't contain a valid alias configuration
        C:\node\ngbug\src\C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.eot.js doesn't exist
      as directory
        C:\node\ngbug\src\C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.eot doesn't exist
[C:\node\ngbug\src\C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.eot]
[C:\node\ngbug\src\C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.eot.ts]
[C:\node\ngbug\src\C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.eot.js]
[C:\node\ngbug\src\C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.eot]
 @ ./node_modules/css-loader?{"sourceMap":false,"importLoaders":1}!./node_modules/postcss-loader/lib?{"ident":"postcss","sourceMap":false}!./node_modules/sass-loader/lib/loader.js?{"sourceMap":false,"precision":8,"includePaths":[]}!./src/main.scss 6:183139-183238
 @ ./src/main.scss
 @ multi ./src/main.scss
ERROR in ./node_modules/css-loader?{"sourceMap":false,"importLoaders":1}!./node_modules/postcss-loader/lib?{"ident":"postcss","sourceMap":false}!./node_modules/sass-loader/lib/loader.js?{"sourceMap":false,"precision":8,"includePaths":[]}!./src/main.scss
Module not found: Error: Can't resolve './C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.svg?v=4.7.0' in 'C:\node\ngbug\src'
resolve './C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.svg?v=4.7.0' in 'C:\node\ngbug\src'
  using description file: C:\node\ngbug\package.json (relative path: ./src)
    Field 'browser' doesn't contain a valid alias configuration
  after using description file: C:\node\ngbug\package.json (relative path: ./src)
    using description file: C:\node\ngbug\package.json (relative path: ./src/C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.svg)
      no extension
        Field 'browser' doesn't contain a valid alias configuration
        C:\node\ngbug\src\C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.svg doesn't exist
      .ts
        Field 'browser' doesn't contain a valid alias configuration
        C:\node\ngbug\src\C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.svg.ts doesn't exist
      .js
        Field 'browser' doesn't contain a valid alias configuration
        C:\node\ngbug\src\C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.svg.js doesn't exist
      as directory
        C:\node\ngbug\src\C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.svg doesn't exist
[C:\node\ngbug\src\C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.svg]
[C:\node\ngbug\src\C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.svg.ts]
[C:\node\ngbug\src\C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.svg.js]
[C:\node\ngbug\src\C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.svg]
 @ ./node_modules/css-loader?{"sourceMap":false,"importLoaders":1}!./node_modules/postcss-loader/lib?{"ident":"postcss","sourceMap":false}!./node_modules/sass-loader/lib/loader.js?{"sourceMap":false,"precision":8,"includePaths":[]}!./src/main.scss 6:183813-183912
 @ ./src/main.scss
 @ multi ./src/main.scss
ERROR in ./node_modules/css-loader?{"sourceMap":false,"importLoaders":1}!./node_modules/postcss-loader/lib?{"ident":"postcss","sourceMap":false}!./node_modules/sass-loader/lib/loader.js?{"sourceMap":false,"precision":8,"includePaths":[]}!./src/main.scss
Module not found: Error: Can't resolve './C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.ttf?v=4.7.0' in 'C:\node\ngbug\src'
resolve './C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.ttf?v=4.7.0' in 'C:\node\ngbug\src'
  using description file: C:\node\ngbug\package.json (relative path: ./src)
    Field 'browser' doesn't contain a valid alias configuration
  after using description file: C:\node\ngbug\package.json (relative path: ./src)
    using description file: C:\node\ngbug\package.json (relative path: ./src/C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.ttf)
      no extension
        Field 'browser' doesn't contain a valid alias configuration
        C:\node\ngbug\src\C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.ttf doesn't exist
      .ts
        Field 'browser' doesn't contain a valid alias configuration
        C:\node\ngbug\src\C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.ttf.ts doesn't exist
      .js
        Field 'browser' doesn't contain a valid alias configuration
        C:\node\ngbug\src\C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.ttf.js doesn't exist
      as directory
        C:\node\ngbug\src\C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.ttf doesn't exist
[C:\node\ngbug\src\C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.ttf]
[C:\node\ngbug\src\C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.ttf.ts]
[C:\node\ngbug\src\C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.ttf.js]
[C:\node\ngbug\src\C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.ttf]
 @ ./node_modules/css-loader?{"sourceMap":false,"importLoaders":1}!./node_modules/postcss-loader/lib?{"ident":"postcss","sourceMap":false}!./node_modules/sass-loader/lib/loader.js?{"sourceMap":false,"precision":8,"includePaths":[]}!./src/main.scss 6:183678-183777
 @ ./src/main.scss
 @ multi ./src/main.scss
ERROR in ./node_modules/css-loader?{"sourceMap":false,"importLoaders":1}!./node_modules/postcss-loader/lib?{"ident":"postcss","sourceMap":false}!./node_modules/sass-loader/lib/loader.js?{"sourceMap":false,"precision":8,"includePaths":[]}!./src/main.scss
Module not found: Error: Can't resolve './C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.woff2?v=4.7.0' in 'C:\node\ngbug\src'
resolve './C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.woff2?v=4.7.0' in 'C:\node\ngbug\src'
  using description file: C:\node\ngbug\package.json (relative path: ./src)
    Field 'browser' doesn't contain a valid alias configuration
  after using description file: C:\node\ngbug\package.json (relative path: ./src)
    using description file: C:\node\ngbug\package.json (relative path: ./src/C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.woff2)
      no extension
        Field 'browser' doesn't contain a valid alias configuration
        C:\node\ngbug\src\C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.woff2 doesn't exist
      .ts
        Field 'browser' doesn't contain a valid alias configuration
        C:\node\ngbug\src\C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.woff2.ts doesn't exist
      .js
        Field 'browser' doesn't contain a valid alias configuration
        C:\node\ngbug\src\C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.woff2.js doesn't exist
      as directory
        C:\node\ngbug\src\C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.woff2 doesn't exist
[C:\node\ngbug\src\C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.woff2]
[C:\node\ngbug\src\C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.woff2.ts]
[C:\node\ngbug\src\C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.woff2.js]
[C:\node\ngbug\src\C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.woff2]
 @ ./node_modules/css-loader?{"sourceMap":false,"importLoaders":1}!./node_modules/postcss-loader/lib?{"ident":"postcss","sourceMap":false}!./node_modules/sass-loader/lib/loader.js?{"sourceMap":false,"precision":8,"includePaths":[]}!./src/main.scss 6:183412-183513
 @ ./src/main.scss
 @ multi ./src/main.scss
ERROR in ./node_modules/css-loader?{"sourceMap":false,"importLoaders":1}!./node_modules/postcss-loader/lib?{"ident":"postcss","sourceMap":false}!./node_modules/sass-loader/lib/loader.js?{"sourceMap":false,"precision":8,"includePaths":[]}!./src/main.scss
Module not found: Error: Can't resolve './C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.woff?v=4.7.0' in 'C:\node\ngbug\src'
resolve './C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.woff?v=4.7.0' in 'C:\node\ngbug\src'
  using description file: C:\node\ngbug\package.json (relative path: ./src)
    Field 'browser' doesn't contain a valid alias configuration
  after using description file: C:\node\ngbug\package.json (relative path: ./src)
    using description file: C:\node\ngbug\package.json (relative path: ./src/C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.woff)
      no extension
        Field 'browser' doesn't contain a valid alias configuration
        C:\node\ngbug\src\C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.woff doesn't exist
      .ts
        Field 'browser' doesn't contain a valid alias configuration
        C:\node\ngbug\src\C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.woff.ts doesn't exist
      .js
        Field 'browser' doesn't contain a valid alias configuration
        C:\node\ngbug\src\C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.woff.js doesn't exist
      as directory
        C:\node\ngbug\src\C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.woff doesn't exist
[C:\node\ngbug\src\C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.woff]
[C:\node\ngbug\src\C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.woff.ts]
[C:\node\ngbug\src\C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.woff.js]
[C:\node\ngbug\src\C:nodengbugnode_modules�ont-awesome�onts�ontawesome-webfont.woff]
 @ ./node_modules/css-loader?{"sourceMap":false,"importLoaders":1}!./node_modules/postcss-loader/lib?{"ident":"postcss","sourceMap":false}!./node_modules/sass-loader/lib/loader.js?{"sourceMap":false,"precision":8,"includePaths":[]}!./src/main.scss 6:183546-183646
 @ ./src/main.scss
 @ multi ./src/main.scss

webpack: Failed to compile.

Desired behavior

Build works without issue.

Mention any other details that might be useful (optional)

May be related to the fix of #8781 (comment)

Working on angular-cli@~1.5 branch.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions