我想在我的NPM包上使用prepack
,但我收到require is not defined
和module is not defined
等错误。
我尝试将这些变量定义为:
__assumeDataProperty(global, 'require', __abstract('function'))
但我收到错误unknown reference type
如何才能正确定义Node.js
的{{1}}全局函数和属性?
答案 0 :(得分:0)
TLDR;使用兼容模式node-cli
$ prepack sourcefile.js --compatibility node-cli
但截至目前,它仅适用于Node 7.9。
以下是对此的解释:
通过将require
声明为__abstract('function')
,您已通知预包装需要的是一个函数,但现在它返回了什么。正确建模环境意味着您需要正确声明require
将返回的内容。但正如你猜测的那样,这并不容易:每个require调用都会根据所需的模块返回不同的对象。
这基本上意味着您必须完成整个模块加载机制,以确定每个对象的形状是由所有需求返回的,以及this commit does究竟是什么。然而,由于PR本身更像是一个PoC,而不是一个完整的功能,因此作者不得不使用Node的一些私有API,这些API往往会在发布之间发生变化。因此,此实验性功能目前仅在节点7.9上可用。
希望这会有所帮助:)