SystemJS не видит экспорт - PullRequest
       25

SystemJS не видит экспорт

0 голосов
/ 08 апреля 2019

Я пытаюсь использовать модульную систему с Es6 и SystemJ.

Это код моей библиотеки

export function sayHello( name ) {
    return `Hello ${name}`;
};

И импортировать app.js.

import { sayHello } from './lib'
sayHello('Myname');

tscongig.json

{
    "compilerOptions": {
        "emitDecoratorMetadata": true,
        "experimentalDecorators": true,
        "module": "commonjs",
        "target": "ES5",
        "outDir": "built",
        "rootDir": "src"
    },
    "include": [
        "**/*"
    ],
    "exclude": [
        "node_modules",
        "**/*.spec.ts"
    ]
}

package.json

{
  ...
  "dependencies": {
    "lite-server": "^2.4.0",
    "systemjs": "^3.1.1"
  }
}

index.html

<!DOCTYPE html>
<html>
    <head><title>TypeScript Greeter</title></head>
    <body>
        <script src="/node_modules/systemjs/dist/system.min.js"></script>
        <script>

          System.import('/built/app.js').then(function(){
                console.log('Done');
            }, function(error){
                console.log(error);
          });

        </script>
    </body>
</html>

После запуска я вижу ошибку.

Uncaught ReferenceError: exports is not defined

Помогите пожалуйста, где найти ошибку?

Ответы [ 2 ]

1 голос
/ 10 мая 2019

Во-первых,

  1. Измените параметр module в файле tsconfig.json на "module": "system", что должно решить проблему экспорта.

  2. Добавьте следующее после вашего <script src="/node_modules/systemjs/dist/system.min.js"></script> для решения проблем с расширением .js.

    <script>
       var systemResolve = System.resolve;
       System.resolve = function (name, parent) {
         return Promise.resolve(systemResolve.call(this, name, parent))
           .then(function (resolved) {
              if(!resolved.endsWith('.js'))
                resolved += '.js';
                return resolved;
              });
       };
    </script>
    
0 голосов
/ 08 апреля 2019

Я обнаружил, что необходимо поставить систему вместо commonjs в разделе модуля. Но теперь у меня есть другая проблема с расширением. SystemJs не может загружать модули и не добавляет расширение ".js". Даже после добавления System.defaultJSExtensions = true;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...