Skip to content

PLATFORM.moduleName inconsistent behavior #121

@pat841

Description

@pat841

I'm submitting a bug report

  • Library Version:
    2.0.0-rc.2 but I have also tested against rc.5

Please tell us about your environment:

  • Operating System:
    OSX 10.12.6

  • Node Version:
    7.4.0

  • NPM Version:
    4.0.5

  • JSPM OR Webpack AND Version
    Webpack 3.3.0

  • Browser:
    Chrome 60

  • Language:
    ESNext

Current behavior:

PLATFORM.moduleName() behaves differently when using absolute, relative, and alias paths in different areas.

Expected/desired behavior:

If using a relative path, I expect the relative module to be loaded/used.
If using an absolute path, I expect the absolute module to be loaded/used.
If using an aliased path, I expect the aliased module to be loaded/used.

Example Skeleton:

I cloned the most recent webpack skeleton (Aug 31st) and modified it to provide examples here:
https://github.com/pat841/aurelia-webpack-test

Files of interest:

  • main.js
  • app.js
  • webpack.config.js

main.js:

    /**
     *  FEATURE EXAMPLES
     */

    // Working as expected
    // .feature(PLATFORM.moduleName('test_feature/index'));

    // Not working?
    // .feature(PLATFORM.moduleName('test_feature'));
    // .feature(PLATFORM.moduleName('./test_feature/index'));
    // .feature(PLATFORM.moduleName('./test_feature'));

    /**
     *  PLUGIN EXAMPLES
     */

    // Working as expected
    // .plugin(PLATFORM.moduleName('test_plugin/index'));
    // .plugin(PLATFORM.moduleName('test_plugin'));

    // Not working?
    // .plugin(PLATFORM.moduleName('./test_plugin/index'));
    // .plugin(PLATFORM.moduleName('./test_plugin'));

    /**
     *  ALIAS EXAMPLES
     */

    // Working as expected
    // .feature(PLATFORM.moduleName('test_alias/test_feature/index'));
    // .plugin(PLATFORM.moduleName('test_alias/test_plugin/index'));
    // .plugin(PLATFORM.moduleName('test_alias/test_plugin'));

    // Not working?
    // .feature(PLATFORM.moduleName('test_alias/test_feature'));

app.js:

    config.map([
      // Working as expected
      { route: ['', 'sample'], name: 'sample', moduleId: PLATFORM.moduleName('./sample'), title: 'Sample' }
      // { route: ['', 'sample'], name: 'sample', moduleId: PLATFORM.moduleName('./test/testsample'), title: 'Sample' }
      // { route: ['', 'sample'], name: 'sample', moduleId: PLATFORM.moduleName('./test_feature/testfeaturesample'), title: 'Sample' }
      // { route: ['', 'sample'], name: 'sample', moduleId: PLATFORM.moduleName('./test_plugin/testpluginsample'), title: 'Sample' }

      // Not working?
      // { route: ['', 'sample'], name: 'sample', moduleId: PLATFORM.moduleName('test_alias/sample'), title: 'Sample' }
      // { route: ['', 'sample'], name: 'sample', moduleId: PLATFORM.moduleName('test_alias/test/testsample'), title: 'Sample' }
      // { route: ['', 'sample'], name: 'sample', moduleId: PLATFORM.moduleName('test_alias/test_feature/testfeaturesample'), title: 'Sample' }
      // { route: ['', 'sample'], name: 'sample', moduleId: PLATFORM.moduleName('test_alias/test_plugin/testpluginsample'), title: 'Sample' }

      // Somehow working?
      // { route: ['', 'sample'], name: 'sample', moduleId: PLATFORM.moduleName('sample'), title: 'Sample' }
      // { route: ['', 'sample'], name: 'sample', moduleId: PLATFORM.moduleName('test/testsample'), title: 'Sample' }
      // { route: ['', 'sample'], name: 'sample', moduleId: PLATFORM.moduleName('test_feature/testfeaturesample'), title: 'Sample' }
      // { route: ['', 'sample'], name: 'sample', moduleId: PLATFORM.moduleName('test_plugin/testpluginsample'), title: 'Sample' }
    ]);

webpack.config.js:

  resolve: {
    extensions: ['.js'],
    modules: [srcDir, 'node_modules'],
    alias: {
      test_alias: srcDir
    }
  },

As you can see above, PLATFORM.moduleName() acts differently depending on WHERE its used (feature, plugin, route) as well as HOW the path is represented (relative, absolute, or aliased).

Simple Example: Aliased paths are working when using .plugin() or .feature() but not inside route moduleIds.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions