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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions