webpack run bundle.js выдает исключение, но нормальные коды выполняются успешно - PullRequest
0 голосов
/ 24 декабря 2018

Я хочу связать все мои машинописные коды, запущенные в nodejs env

Поместить мой проект в Docker.Но я не хочу, чтобы в мои изображения встраивались такие тяжелые модули node_modules

. Поэтому я решил использовать все пакеты кода webpack, а затем удалить из них node_modules

Если я запускаю свой index.js в powershell node index.js, это работает.

Но если я соберу все коды в bundle.js с помощью webpack,

и запусту node bundle.js

Но!

consoleсказал

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 function или default class.

ТакЯ должен проверить, что это

Для класса, мы новый конструктор

Для функции мы называем это

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

my 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){

    }
}

Мой вопрос

Почему пакет веб-пакетов имеет другое поведение

npm index.js работает, но npm bundle.js выдает исключение

Вы можете найти все мои коды в

https://github.com/iamwwc/mdProcessor


Воспроизвести

Не работает, если у вас не запущен Redis

Клонируйте мой репозиторий

npm install

webpack

затем запустите

node ./dist/bundle.js

...