В наборе библиотек машинописи статический экспорт не найден - PullRequest
0 голосов
/ 09 сентября 2018

У меня есть класс Style в файле Style.ts:

export class Style
{
    ...
}

Этот класс имеет некоторые свойства, некоторые методы и конструктор, а также несколько операторов импорта для других зависимостей класса. В настоящее время этот класс используется другими классами с помощью стандартного оператора импорта es6:

import { Style } from "../Theming/Style";

Если я предоставлю этот файл в качестве точки входа для веб-пакета (одного из нескольких), он выдаст его в конце пакета:

/***/ 0:  
/*!***************************************************************!*\
/* ./src/Forms/Theming/Style ***!
\********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

module.exports = __webpack_require__(/*! ./src/Forms/Theming/Style 
*/"./src/Forms/Theming/Style.ts");

И класс Style не отображается в комплекте. Если я не предоставлю этот файл в качестве точки входа, он будет полностью проигнорирован, даже если он используется другим модулем, который включен в качестве точки входа. Кроме того, я привожу один класс в качестве примера, поскольку это происходит с несколькими файлами, и в настоящее время я не понимаю, почему.

Это мой конфигурационный файл webpack:

module.exports = {
    watch: false,
    mode: "development",
    devtool: false,
    entry:
    {
        main: common.entryPoints
    },
    output:
    {
        path: __dirname + "/../dist",
        filename: "forms-library.js",
        library: "FormsLibrary",
        libraryTarget: "umd"
    },
    module:
    {
        rules:
        [
            { test: /\.ts$/, use: "ts-loader", exclude: "/node_modules/" }
        ]
    },
    resolve:
    {
        extensions: [ ".ts" ],
        modules: [ "./src" ]
    }
}

Это моя машинописная конфигурация:

{
    "exclude": ["node_modules","dist", "build"],
    "compilerOptions": 
     {
        "lib": [ "es2015", "dom" ],             
        "sourceMap": false,
        "target": "es5",
        "module": "es6"
     }
}

Может кто-нибудь сказать мне, почему это происходит в настоящее время? Спасибо!

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

Я не уверен, что это уже было решено, но у меня возникла та же проблема, и после долгих копаний я исправил ее, включив libraryTarget в мое свойство output Конфигурации Webpack:

// ...
output: {
  path: root('./dist'),
  filename: 'index.js',
  libraryTarget: 'umd' // <-- this line
},
// ...

Надеюсь, это поможет!

0 голосов
/ 10 сентября 2018

На класс Style ссылаются только аннотации типов, поэтому после того, как компилятор TypeScript удалит эти аннотации типов, Webpack правильно определит, что класс никогда не будет использоваться, начиная с вашей точки входа во время выполнения. Если вы добавите фактический вызов к new Style(...) где-то, класс Style должен быть включен. Или, если он предназначен только для клиентов вашей библиотеки, вам нужно будет повторно экспортировать его из точки входа, чтобы клиенты могли получить к нему доступ.

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