Как импортировать самодельный модуль в create-реагировать-приложение? - PullRequest
0 голосов
/ 15 января 2020

Я использую create-react-app в своем приложении ReactJS с TypeScript, и я хотел бы импортировать модуль TypeScript / JavaScript, который я создал в другом проекте.

Модуль состоит из файл mymodule.js, в котором код выглядит примерно так:

var mymodule;
(function (mymodule) {
    var MyClass = /** @class */ (function () {
        function MyClass() {
        }
        MyClass.myMethod = function () {
            // code
        };
        return MyClass;
    }());
    mymodule.MyClass = MyClass;
})(mymodule || (mymodule = {}));

Затем есть файл определения типа mymodule.d.ts, который выглядит так:

declare module mymodule {
    class MyClass {
        private static myMethod;
    }
}

В моем create-react-app проекта, я поместил эти два файла в папку /src/vendor и хочу использовать модуль следующим образом:

import { MyClass } from '../vendor/mymodule';

...

Однако код Visual Studio (т.е. компилятор TypeScript) говорит

File '.../vendor/mymodule.d.ts' is not a module. ts(2306)

Когда я запускаю проект, переменные из модуля (например, класс MyClass) равны undefined.

Это может быть причиной ошибки: библиотека сгенерирована использование module: "AMD", но create-react-app, кажется, обеспечивает module: "esnext".

Edit: Вот tsconfig. json проекта create-react-app:

{
  "compilerOptions": {
    "target": "es5",
    "lib": [
      "dom",
      "dom.iterable",
      "esnext"
    ],
    "allowJs": true,
    "skipLibCheck": true,
    "strict": true,
    "forceConsistentCasingInFileNames": true,
    "noEmit": true,
    "jsx": "react",
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "module": "esnext",
    "moduleResolution": "node",
    "resolveJsonModule": true,
    "isolatedModules": true
  },
  "include": [
    "src"
  ]
}

1 Ответ

2 голосов
/ 15 января 2020

Вы не можете импортировать файл из-за того, что вы не экспортируете модуль. Чтобы загрузка модуля работала, у вас должен быть экспорт в нижней части файла класса myModule.

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