我想捆绑所有在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 function
或default 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