在Ionic4(ionic/angular)中运行nem2-sdk的经历

大家好,我是@scrpgil。
突然間,我有個問題困擾著我已經半年以上了。
這個問題是關於在Ionic4(ionic/angular)環境下nem2-sdk無法運行的問題。nem2-sdk是一個用於方便處理NEM加密貨幣的模組。我經常在個人產品中使用NEM,但自從升級到Ionic4後,nem2-sdk就無法運行了,讓我感到非常無助。

然而,昨天我找到了在Ionic4环境中运行nem2-sdk的方法,现在我将把这些经验整理一下。

NEM是一种加密货币,提供用于处理加密货币的API作为接口,并且非常适合那些从事Web开发的人使用。如果你对区块链感兴趣,一定要尝试一下。

總結

请参考以下链接的项目:
我使用ionic start创建了一个空白项目,并使其能够运行nem2-sdk,已经上传到GitHub上。
https://github.com/scrpgil/ionic4-angular8-nem2-sdk

這是根據@44uk_i3先生發布的能夠在Angular上運行nem2-sdk的存儲庫來進行開發的。原本是基於Angular8和nem2-sdk的組合,但也可以應用於Ionic4(ionic/angular)。該存儲庫的連結如下:https://github.com/44uk/ng2-with-nem-sample。

请搜索patch-package了解有关已更改的源代码和patchs文件夹的信息。这是我第一次使用,但相当方便。

问题:为什么nem2-sdk无法运行?

首先,Ionic3的时代是可以运行的。为什么在Ionic4(ionic/angular)中不能运行呢?简而言之,这是因为升级到Angular8涉及了Webpack的配置。

在Ionic3时代,Ionic团队利用了由@ionic/app-script创建的Webpack配置。在那个时候的配置中,我们使用了空模块来代替那些只在浏览器中不使用,而在node模块中使用的模块。

   // Some libraries import Node modules but don't use them in the browser. 
   // Tell Webpack to provide empty mocks for them so importing them works. 
   node: { 
     fs: 'empty', 
     net: 'empty', 
     tls: 'empty' 
   }

源代码链接

Screen Shot 2019-12-09 at 3.47.13.png

我尚未完全调查清楚为什么@angular-devkit/build-angular组件中没有这个设置,不过react-scripts也有类似的描述,所以我借用了这个描述并将其添加到@angular-devkit/build-angular组件的Webpack设置中,成功地使用了它。

react-scripts源代码的链接

我的学习总结

现在,我已经可以使用nem2-sdk了。而且,我还学会了用patch-package来修改之前随便用的Webpack,并且可以用Git进行管理。

因为我想要加强关于Webpack的知识,所以打算利用patch-package来更加深入地了解它。那就这样吧。

bannerAds