Javascript 利用网页包实现全栈模块重用

Javascript 利用网页包实现全栈模块重用,javascript,node.js,typescript,webpack,react-fullstack,Javascript,Node.js,Typescript,Webpack,React Fullstack,我正在从事一个在后端(nodejs)和前端都使用typescript的项目。该项目涉及一些加密技术,这意味着我正在使用-在后端,我使用作为垫片,以便我可以在客户端和服务器之间共享代码 有没有一种方法可以让模块在客户端上导出一件东西,在服务器上导出另一件东西,这样我就可以从“/webcrypto”以加密的方式从接口公开一个文件 在服务器上,它应该导出节点webcrypto ossl,在客户机上,只需公开window.crypto 我尝试了各种方法,但webpack一直试图将节点webcryptos

我正在从事一个在后端(nodejs)和前端都使用typescript的项目。该项目涉及一些加密技术,这意味着我正在使用-在后端,我使用作为垫片,以便我可以在客户端和服务器之间共享代码

有没有一种方法可以让模块在客户端上导出一件东西,在服务器上导出另一件东西,这样我就可以从“/webcrypto”以加密的方式从接口公开一个文件

在服务器上,它应该导出
节点webcrypto ossl
,在客户机上,只需公开
window.crypto

我尝试了各种方法,但webpack一直试图将
节点webcryptossl
拉入浏览器,结果失败了

以下是我(失败的)尝试:


方法本身基本正确,您可能需要配置Web包的
externals
,以使
节点WebCryptoOSSL
仅在nodejs上下文中加载。看起来像

webpack.config.js
...
externals: {
  'node-webcrypto-ossl: {
    commonjs: 'node-webcrypto-ossl'
   },
然后,webpack将不会尝试捆绑特定模块,而是将这些模块保持为
require

除此之外,您还可以为node.js/浏览器上下文配置
definePlugin
,这样您的加密模块就可以在构建时为每个环境静态编译,而不是在运行时查看对象。

谢谢!在这种情况下,“转发”类型如何工作?
webpack.config.js
...
externals: {
  'node-webcrypto-ossl: {
    commonjs: 'node-webcrypto-ossl'
   },