ES6 + SystemJs-почему я должен использовать.расширение JS, чтобы импортировать модуль ЕС6?


Почему я должен использовать .расширение js для импорта модуля es6 с systemjs? Например:

import { multiplier } from "adder.js"; // ok
import { double, square } from 'modules'; // error

var timesTwo = multiplier(2);

console.log(timesTwo(4));

Сообщение об ошибке:

GET http://local-host/projects/es6/src/modules 404 (не найден)Z @ система.js: 4 (анонимная функция) @ system.js: 4 (анонимная функция) @ система.js: 4 (анонимная функция) @ system.js: 5 (анонимная функция) @ система.js: 5 (анонимная функция) @ system.js: 5 (анонимная функция) @ система.js: 5 (анонимная функция) @ system.js: 5 (анонимно функция) @ система.js: 5 (анонимная функция) @ system.js: система 4.js: 4 Uncaught (in обещание) ошибка: ошибка: ошибка XHR (404 не найдено) загрузка http://local-host/projects/es6/src/modules(...)

Это мой HTML с системой.js:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>ES2015 Module Example</title>
</head>
<body>
    <script src="lib/system.js"></script>
    <script>
        System.config({
            "baseURL": "src",
            // 'plugin-babel' or 'traceur' or 'typescript'
            transpiler: 'plugin-babel',
            // or traceurOptions or typescriptOptions
            babelOptions: {

            },
            map: {
                'traceur': './lib/traceur.min.js',
                'plugin-babel': './lib/plugin-babel/plugin-babel.js',
                'systemjs-babel-build': './lib/plugin-babel/systemjs-babel-browser.js'
            }
          }
        });
        System.import("app.js");
    </script>
</body>
</html>

Есть идеи, что я пропустил?

1 2

1 ответ:

Потому что system js не добавляет .js к имени модуля. Некоторые загрузчики модулей (Node, webpack и т. д.) делают это, но нет стандарта, который бы указывал, что это должно быть сделано.

Для этого есть опция конфигурации , но она будет устаревшей.