繁体   English   中英

无法导入与 WebPack 捆绑的 TypeScript 库

[英]Can't import TypeScript library bundled with WebPack

在 TypeScript 项目中,我正在尝试导入一个名为“fsaa-util”的 TypeScript 库,该库与 WebPack 捆绑在一起。 代码编译得很好,但在运行时尝试使用该库中的 object 时,它们是未定义的。

索引.ts:

import { MyClass } from "fsaa-util";

let t = new MyClass(); //Throws MyClass is not a constructor.
console.log(t);

图书馆的 index.ts:

import "reflect-metadata";

export { default as MyClass } from "MyClass";

MyClass.ts:

export default class MyClass {

}

库的tsconfig.json:

{
    "compilerOptions": {
        "noImplicitAny": true,
        "module": "es6",
        "target": "es6",
        "jsx": "react",
        "jsxFactory": "h",
        "strict": true,
        "experimentalDecorators": true,
        "moduleResolution": "node",
        "declaration": true,
        "declarationDir": "./dist",
        "baseUrl": "./src",
        "outDir": "./dist",
        "plugins": [
            { "transform": "typescript-transform-paths" },
            { "transform": "typescript-transform-paths", "afterDeclarations": true }
        ]
    },
    "include": [
        "src/**/*"
    ],
    "exclude": [
        "node_modules",
        "dist"
    ]
}

库的Webpack.config.js:

const path = require('path');
const VueLoaderPlugin = require('vue-loader/lib/plugin')

module.exports = {
    entry: './src/index.ts',
    output: {
        filename: 'index.js',
        publicPath: '/dist/',
        path: path.resolve(__dirname, 'dist')
    },
    module: {
        rules: [
            {
                test: /\.vue$/,
                loader: 'vue-loader',
            },
            {
                test: /\.tsx?$/,
                loader: 'ts-loader',
                exclude: /node_modules/,
                options: {
                    allowTsInNodeModules: true,
                    appendTsSuffixTo: [/\.vue$/],
                    compiler: 'ttypescript'
                }
            }
        ]
    },
    resolve: {
        extensions: ['.ts', '.tsx', '.vue', '.wasm', '.mjs', '.js', '.json', 'css'],
        alias: {
            'vue$': 'vue/dist/vue.esm.js',
        },
        modules: ["src", "node_modules"]
    },
    plugins: [
        new VueLoaderPlugin(),
    ]
};

必须在库的webpack.config.js的“输出”部分添加这些行:

library: "fsaa-util",
libraryTarget: 'umd',
umdNamedDefine: true

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM