dotNet 5 中执行 Node.js
在低代碼產品中為了擴展功能,我們在業務編排中會擴展代碼塊的功能,允許用戶直接在界面中進行代碼(Node.js、 Python)的編寫,來實現取數或者賦值的一些功能。本文簡單介紹下在 dotNET 5 中怎么樣進行 Node.js 的調用以及怎樣部署到 CentOS 和 Docker 容器中。
環境
dotNET :5
Node.js:14.17.4
CentOS:7.6
Docker:19.03.13
dotNET 5 中的代碼實現
1、在 VS 中創建 WebAPI 示例項目 nodejs-demo 項目,目標框架選擇 .NET 5.0。
2、在項目中引入 NuGet 包:Microsoft.AspNetCore.NodeServices ,這里我使用的是 5.0 的預覽版本。
3、修改 Startup 類,在 ConfigureServices 方法中添加下面代碼:
services.AddNodeServices();4、在項目的根目錄中創建一個名為 hello.js 的腳本文件,文件的屬性中的「復制到輸出目錄」設置為「始終復制」,文件的內容如下:
module.exports?=?function?(callback,?name)?{var?msg?=?'Hello,'?+?name;callback(null,?msg); };5、編寫一個 API 接口方法:
[HttpGet] public?async?Task<IActionResult>?Get([FromServices]?INodeServices?nodeServices) {var?result?=?await?nodeServices.InvokeAsync<string>("hello.js",?"oec2003");return?Ok(result); }6、如果正常運行,結果如下:
部署到 CentOS 中
1、在 Node.js 的中文官網 (http://nodejs.cn/download/current/) 下載 Linux 二進制文件 (x64) 的安裝包;
2、將下載的安裝包 node-v14.17.4-linux-x64.tar.xz 復制到 CentOS 系統的 root 目錄中;
3、執行命令 tar -xvf node-v14.17.4-linux-x64.tar.xz 解壓安裝文件;
4、執行命令 mv node-v14.17.4-linux-x64 nodejs 將解壓后的文件夾命名為 nodejs;
5、執行命令 cp -r nodejs /usr/local 將 nodejs 目錄復制到 /usr/local ;
6、執行下面的命令進行軟鏈接:
ln?-s?/usr/local/nodejs/bin/npm?/usr/local/bin/ ln?-s?/usr/local/nodejs/bin/node?/usr/local/bin/7、輸入 node -v 進行檢查,如果有版本號出現說明安裝成功;
8、執行下面的命令進行 dotNET 5 安裝:
sudo?rpm?-Uvh?https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm sudo?yum?install?dotnet-sdk-5.09、將示例程序 nodejs-demo 發布到 pub-nodejs 目錄,將發布后的目錄拷貝到 CentOS 服務器的 root 目錄中;
10、進入到 /root/pub-nodejs 目錄,執行命令 dotnet nodejs-demo.dll 運行。
在 Docker 容器中部署
1、在 /root/pub-nodejs 目錄中創建 Dockerfile 文件,內容如下:
FROM?mcr.microsoft.com/dotnet/aspnet:5.0-buster-slim COPY?.?/app WORKDIR?/app EXPOSE?80/tcp ENTRYPOINT?["dotnet",?"nodejs-demo.dll"]2、進入到 /root/pub-nodejs 目錄中執行命令 docker build -t nodejs-demo . 進行鏡像的構建;
3、執行命令 docker run -d -p 5000:5000 --name nodejs-demo nodejs-demo 進行容器的創建,創建成功后,還不能正常運行,因為現在容器中還沒有安裝 Node.js 環境;
4、容器中安裝 Node.js 的方式和在 CentOS 中相同,執行命令 docker cp nodejs 容器id:/usr/local 將 Node.js 的包復制到容器中的 /usr/local 目錄中;
5、執行 docker exec -it 容器id bash 進入到容器中;
6、執行下面的命令進行軟鏈接:
ln?-s?/usr/local/nodejs/bin/npm?/usr/local/bin/ ln?-s?/usr/local/nodejs/bin/node?/usr/local/bin/7、在網頁中或用 Postman 進行接口的訪問進行測試;
構建包含 Node 運行環境的基礎鏡像
1、通過構建鏡像是使用 Dockerfile,下面使用另一種方式來構建;
2、因為在容器中部署后,容器中已經有 Node 環境了,執行下面的命令就可以將運行的容器構建成一個新的鏡像:
docker?commit?-a?"oec2003"?-m?"add?nodejs"?容器id?aspnet-nodejs:5.03、執行完成后,使用 docker images 命令可以看到新創建的 aspnet-nodejs:5.0 ;
4、再進行鏡像構建時就可以將 Dockerfile 文件內容修改如下:
FROM?aspnet-nodejs:5.0 COPY?.?/app WORKDIR?/app EXPOSE?80/tcp ENTRYPOINT?["dotnet",?"nodejs-demo.dll"]5、這樣構建出來的鏡像中就包含了 Node 環境。
總結
以上是生活随笔為你收集整理的dotNet 5 中执行 Node.js的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 不会自动化UI测试?不会编程?没问题,会
- 下一篇: WPF 如何流畅地滚动ScrollVie