在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

在樹莓派上構建和部署 Node.js 項目

上海晶珩電子科技有限公司 ? 2025-03-25 09:44 ? 次閱讀

探索在Raspberry Pi上構建和部署Node.js項目的最佳實踐。通過我們的專業提示和技巧,克服常見挑戰,使您的項目順利運行。

去年圣誕節,我收到了一份極其令人著迷的禮物,它占據了我許多周末的時間,甚至讓我夜不能寐。它就是全新的Raspberry Pi Zero。

它帶來了無窮無盡的可能性,并且情不自禁占據著我的大腦,所以我采取了唯一明顯的行動方案就是把它扔進抽屜里,然后慢慢遠離它。幾個月后,我讀到了同為雙面間諜的Adam Lukens的一篇精彩文章。那篇文章給了我所需的鼓舞,讓我卷起袖子,拂去Raspberry Pi上的灰塵,開始工作。為了額外的挑戰,我決定在我的項目中加入Node.js。我將其稱為Tot Tunes。

我只用了一兩個小時就建立了一個可行原型,并短暫地感覺自己像個超級英雄。然后我發現了一個錯誤。我修復了那個錯誤,但又出現了許多其他小問題。如果斷電或拔下電源怎么辦?因此,我通過一系列的學習,并為我的小項目建立了一個工具庫。我想分享的不僅僅是構建Tot Tunes本身的經驗。這要歸功于Adam詳細的文章。我希望降低門檻,讓更多人能夠構建出色的產品,并滿懷信心地運行它們,而無需經歷我在項目中遇到的痛苦。

如果您想一邊閱讀本文一邊動手構建一些東西,您需要一臺安裝了Raspbian的Raspberry Pi、對JavaScript基礎有合理的掌握,以及安裝Node.js。我們還將進行少量的shell腳本編寫。

我構建了一個Node.js項目

您可能有一個一直渴望構建的小項目,如果沒有,我為您準備了一個簡單的Node.js服務。請前往此處克隆項目,并按照自述文件中的說明進行設置。

如何部署?

部署Node.js項目的最顯而易見的方法是在Raspberry Pi上安裝Node.js,然后開始編寫代碼。有些工作流程可能很適合這種方法,但我知道我很快就會懷念筆記本電腦的強大功能和便捷性。另一種常見的方法是在筆記本電腦上編寫代碼,然后將代碼復制到Raspberry Pi上并運行npm install && npm start。每次更新代碼時,只需復制代碼并重新啟動服務即可。雖然這不是世界上最糟糕的情況,但我認為一定有另一種更好的方法。其中一個問題是,我受限于Raspbian軟件包存儲庫中可用的Node.js版本,因為我想使用更新版本的Node.js來提高性能和功能。解決此問題的常見方法是使用像nodenv這樣的工具來管理Node.js版本。但我意識到可以有不同的選擇。我是繼續在Raspberry Pi上管理所有這些基礎設施,還是嘗試尋找一種更簡單的方法?我最近聽說了一個項目,該項目將軟件包與Node.js運行時捆綁在一起,以便您可以將應用程序作為獨立的可執行文件分發。這最終解決了我的許多問題。您可以在GitHub上的zeit/pkg找到該工具。由于我現在處理的是二進制可執行文件,因此我知道我需要獲取一個適用于Raspberry PiCPU架構的Linux二進制文件。初步測試表明,從理論上講,pkg支持這些限制條件,但出現了一條錯誤信息。

nodenv:https://github.com/nodenv/nodenv

zeit/pkg:https://github.com/vercel/pkg

錯誤!無法在此處為'armv7'構建,僅能為'x64'構建

經過一番挖掘,我在github上找到了這個問題的評論。它表明,只要我的依賴項是純JavaScript,我就可以通過一個標志告訴pkg不要將結果編譯為字節碼,即pkg ... --no-bytecode。構建成功,所以我把二進制文件復制到了Raspberry Pi上。它起作用了!我再也不用擔心部署和開發版本的Node.js同步問題了。我可以直接將這些配置檢入git。

問題的評論:https://github.com/vercel/pkg/issues/145#issuecomment-311150484

它起作用了!但它剛剛崩潰了...

我住在龍卷風巷附近。幸運的是,我的附近從來沒有真正發生過龍卷風。但不幸的是,每年都會有暴風雨來臨,然后就會停電。有時這只是電壓波動造成的短暫停電,但無論如何,我的沒有電池的Raspberry Pi都會在沒有警告的情況下重新啟動。關鍵是,我的Raspberry Pi服務需要為大自然帶來的任何事情做好準備。由于我使用的是Raspbian,因此systemd似乎是完成這項工作的合適工具。我不知道如何編寫systemd服務,但這似乎是學習的完美借口。它實際上非常容易制作!命令行界面非常直觀,您只需創建一個描述如何運行服務的文件即可。

[Unit]Description=TotTunes
[Service]User=piExecStart=/usr/local/bin/tot-tunesType=simpleRestart=always
[Install]WantedBy=multi-user.target

將該文件放置在/etc/systemd/system/目錄中。然后運行以下命令。

systemctl daemon-reloadsystemctl enable tot-tunes.serviceservice tot-tunes start

通過這種簡單的配置,您可以獲得一個在重啟和崩潰時自動重啟的服務。另外,它還可以通過journalctl接口輕松訪問應用程序的日志。

任務完成了嗎?

在Raspberry Pi(Raspberry Pi)項目上進行開發既有趣又有點讓人上癮。但如果你像我一樣,我們還渴望在我們小小的物聯網霸主之外擁有自己的生活,所以并沒有總是有時間花幾個小時來學習一個新的操作系統編程語言。

我們需要快速實現一個想法,這樣我們就可以繼續我們的生活,只需稍微多一點的JS自動化,因為你永遠不會有太多的JS。

雖然我部分選擇Node.js是作為一種有趣的挑戰,但我認為它對于物聯網新手來說還有其他優勢。一方面,幾乎每個人都知道一點JS,所以這是讓那些想要快速提高生產力的人們的一條途徑。如果你不是JS的粉絲,那么有大量的工具可以幫助你編寫TypeScript、CoffeeScript和許多其他可以編譯成JS的語言。npm有成千上萬的包,所以你可以借鑒他人的工作成果,而pkg允許我們將所有這些打包成一個可執行二進制文件,無需安裝任何必要的依賴項。

即使在你的下一個Raspberry Pi項目上使用Node.js和pkg有充分的理由,但在投入這個平臺之前,你還是要權衡一下成本和收益。Node.js是一個相當大的依賴項,在二進制文件中包含運行時環境會創建超過30MB的文件。這會減慢部署速度,因為你必須傳輸整個二進制文件,而不僅僅是一些文本文件。此外,像任何解釋型語言一樣,你可能會遇到應用程序性能不可接受的情況。

這種設置非常適合啟動一個簡單的服務,但我認為我們可以繼續改善Raspberry Pi和Node.js的體驗。在為Raspberry Pi構建軟件時,最大的矛盾之一是,你可以通過在設備本身上進行開發來獲得快速且更高保真度的反饋,但你可能沒有習慣使用的所有好工具。如果你選擇在舒適的筆記本電腦上構建軟件,那么每次你想在Raspberry Pi上測試代碼時,都可能會經歷等待部署的痛苦。

另一個困擾是設置服務配置的繁瑣。在Raspberry Pi上手動編輯文件的過程很容易耗費你本來可以用來構建你熱愛的東西的幾個小時的時間。一個相關的問題是分發。如果你的非技術朋友來訪并注意到了你的酷炫新玩意怎么辦?如果你為別人建了一個項目,并且需要更新它怎么辦?

這個領域充滿了機遇,我很高興能繼續學習、建設和與你們分享。如果你正在用Raspberry Pi做令人興奮的事情,并且這些與你產生了共鳴,請與我聯系!關注樹莓派開發者,了解更多樹莓派相關內容!

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Raspberry Pi
    +關注

    關注

    2

    文章

    613

    瀏覽量

    22539
  • 樹莓派
    +關注

    關注

    118

    文章

    1881

    瀏覽量

    106243
  • NODE.JS
    +關注

    關注

    1

    文章

    49

    瀏覽量

    32867
收藏 人收藏

    評論

    相關推薦

    Node.js 給前端帶來了什么

    語言”,他們將會想如此重要的服務端工作怎么能交給這群看起來不太靠譜的人用如此“不嚴肅”的語言來玩?我的經驗里,這種觀念上的沖突是前后端工程師們是否引入Node.js這一問題上的最大分歧。Server
    發表于 05-06 14:23

    【Intel Edison試用體驗】XDK篇:Node.js操作SQLite3

    test.db數據庫,test.db是我上帖建的一個數據庫查詢命令用db.all(),創建數據庫,數據表用db.run();如我使用sqlite3的select*from scene;node.js
    發表于 07-25 09:39

    【orangepi zero試用體驗】安裝Node.JS運行環境與示例

    本帖最后由 eyecf 于 2016-12-24 17:51 編輯 本期要和大家介紹一下OrangePI zero安裝Node.js運行環境的方法,并運行一下vuejs的實例Node.js
    發表于 12-24 17:07

    深入淺出Node.js迷你書

    [InfoQ]深入淺出Node.js迷你書
    發表于 11-04 15:50 ?0次下載

    node.jsjs要點總結

    (Non-blocking)或異步I/O 由于Node.js一個服務器端框架,所以它主要工作之一是處理瀏覽器請求。傳統的I/O系統中,每個請求的發出都是在上一請求到達之后才發出的。所以這被稱為阻塞
    發表于 10-13 10:39 ?0次下載

    node.js訓練好的神經網絡模型識別圖像中物體的方法

    如何在Node.js環境下使用訓練好的神經網絡模型(Inception、SSD)識別圖像中的物體。
    的頭像 發表于 04-06 13:11 ?9344次閱讀

    第3部分:使用NoDE.JS的程序

    Implement MQTT to publish temperature data using Node.js*.
    的頭像 發表于 10-26 07:16 ?1879次閱讀

    Node.js 內存泄漏問題初探

    作者 | 后端Team朱捷峰整理 | 包包V8 垃圾回收機制事實上,我們平時Node.js 的時候很少去關心內存問題,那是因為 Node.js 對 Google V8 進行封裝,底層的垃圾收回
    的頭像 發表于 11-01 13:39 ?4844次閱讀

    Node.js的九大后端框架你都知道嗎

    Nest 是一個用于構建高效,可擴展的 Node.js 服務器端應用程序的框架。
    發表于 04-26 17:40 ?3343次閱讀
    <b class='flag-5'>Node.js</b>的九大后端框架你都知道嗎

    Raspberry Pi中利用Node-RED控制LED

    今天的教程中,我們將研究如何使用 Node-RED 樹莓派上部署簡單的項目
    的頭像 發表于 09-01 16:00 ?6303次閱讀
    <b class='flag-5'>在</b>Raspberry Pi中利用<b class='flag-5'>Node</b>-RED控制LED

    Node.js網頁控制的機器人小車

    電子發燒友網站提供《Node.js網頁控制的機器人小車.zip》資料免費下載
    發表于 02-08 16:06 ?0次下載
    <b class='flag-5'>Node.js</b>網頁控制的機器人小車

    介紹Node.js應用全鏈路信息獲取的方法

    這種技術,就是Node.js應用全鏈路追蹤。它是 Node.js 涉及到復雜服務端業務場景中,必不可少的技術保障。
    的頭像 發表于 02-10 11:21 ?740次閱讀

    node.js實戰源碼

    node.js實戰源碼
    發表于 05-16 18:06 ?1次下載

    Node.js小科普和Node.js安裝常見管理工具

    Node.js是一個JavaScript的運行環境,用來執行JavaScript代碼。 為什么會出現這么一個運行環境呢,從JavaScript研發初衷可以看出它是為了運行在瀏覽器中的,讓網頁交互更加
    的頭像 發表于 11-23 15:37 ?278次閱讀
    <b class='flag-5'>Node.js</b>小科普和<b class='flag-5'>Node.js</b>安裝常見管理工具

    Bun 1.2震撼發布:全力挑戰Node.js生態的JavaScript運行時新星

    了與 Node.js 的兼容性,還為開發者帶來了內置的數據庫支持和云服務集成能力,進一步強化了其“全能工具包”的定位。Node.js 兼容性獲得突破性進展在此次更新中,最引人注目的是 Bun
    的頭像 發表于 01-24 10:42 ?350次閱讀
    Bun 1.2震撼發布:全力挑戰<b class='flag-5'>Node.js</b>生態的JavaScript運行時新星
    主站蜘蛛池模板: 午夜国产精品久久影院 | 久久精品久噜噜噜久久 | 免费人成在线观看网站品爱网日本 | 色偷偷亚洲天堂 | 伊人最新网址 | 亚洲国产综合久久精品 | 一女被多男玩很肉很黄文 | 日韩电影中文字幕 | 亚洲人成电影 | 欧美污网站 | 天天视频一区二区三区 | h视频在线免费观看 | 色多多网 | 美女被羞羞产奶视频网站 | 日本不卡视频一区二区三区 | 成年女人毛片免费视频 | 痴女在线播放免费视频 | 久草男人天堂 | 色www永久免费视频 色y情视频免费看 | 日本韩国三级在线 | 亚洲黄网免费 | 日韩欧美一卡二区 | 干干操 | 亚洲丰满熟妇毛片在线播放 | 色www| 免费看又爽又黄禁片视频1000 | 俄罗斯一级成人毛片 | 在线观看国产日本 | 磁力bt种子搜索在线 | 最新天堂| 国产青草 | 欧美草比 | 天天插视频 | 伊人成人在线 | 国产成人精品一区二区仙踪林 | 色综合天天五月色 | 国产免费黄视频 | 九九热在线精品视频 | 夜夜艹 | 精品午夜视频 | 亚洲国产精品综合久久2007 |