webpack运行bundle.js抛出异常,但正常代码成功运行

时间:2018-12-24 13:48:39

标签: typescript webpack dynamic-import

我想捆绑所有在nodejs env中运行的打字稿代码

将我的项目放入docker。但我不想在其中构建如此沉重的node_modules 我的图片

所以我不想使用webpack捆绑所有代码,然后删除图像中的node_modules

如果我在Powershell node index.js中运行index.js,则可以正常运行。

但是,如果我使用webpack将所有代码捆绑到bundle.js中,

并运行node bundle.js

但是!

控制台说

TypeError: Class constructor n cannot be invoked without 'new'
    at P.<anonymous> (D:\Codes\VUESSRServer\dist\bundle.js:102:89316)
    at Generator.next (<anonymous>)
    at s (D:\Codes\VUESSRServer\dist\bundle.js:102:87106)

第一

我想加载我的内部插件

private async loadInternalPlugins() {
    const fns = await import('./plugins/index');
    let promises = Object.keys(fns).map(async fn => {
        let f = fns[fn]
        return await isClass(f) ? (new f(this)) : f.call(this)
    });

    return Promise.all(promises)
}

我的插件导出default functiondefault class.

所以我必须检查它是什么

对于类,我们新建了构造函数

对于功能,我们称之为

export function isClass(fn: any) {
    return typeof fn === 'function' &&
        /^class\s/.test(Function.prototype.toString.call(fn))
}

我的plugins/index.ts

export { default as frontMatter} from './front-matter'

export { default as markdown} from './markdown'

export { default as processor } from './processor'

export { default as restful } from './RESTful'

对于导出的功能,看起来像

export default function(this: Server){
    beforeReq(this)
    query.call(this)
    login(this)
    admin(this)
}

对于导出默认类,它看起来像

export default class {
    constructor(instance: server){

    }
}

我的问题

为什么webpack捆绑包具有不同的行为

npm index.js有效,但是npm bundle.js抛出异常

您可以在以下位置找到我的所有代码

https://github.com/iamwwc/mdProcessor


复制

如果没有运行Redis,则无法正常运行

克隆我的仓库

npm install

webpack

然后运行

node ./dist/bundle.js

0 个答案:

没有答案