Я хочу связать все мои машинописные коды, запущенные в 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