我正在开发一个在后端(nodejs)和前端都使用打字稿的项目。该项目涉及一些密码学,这意味着我正在使用WebCrypto - 在后端我node-webcrypto-ossl
用作垫片,因此我可以在客户端和服务器之间共享代码。
有没有办法让模块在客户端导出一个东西,在服务器上导出另一个东西,这样我就可以import * as crypto from './webcrypto'
以一种常见的方式公开接口?
在服务器上它应该导出node-webcrypto-ossl
,而在客户端上只是暴露window.crypto
.
我尝试了各种方法,但 webpack 一直试图拉node-webcrypto-ossl
入浏览器,这并不奇怪。
这是我的(失败的)尝试:
let crypto = null;
if (typeof window === 'undefined') {
const WebCrypto = require('node-webcrypto-ossl');
crypto = new WebCrypto();
} else {
crypto = window.crypto;
}
export {
crypto as webcrypto
};