色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

在樹莓派上構(gòu)建和部署 Node.js 項目

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

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

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

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

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

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

我構(gòu)建了一個Node.js項目

您可能有一個一直渴望構(gòu)建的小項目,如果沒有,我為您準(zhǔn)備了一個簡單的Node.js服務(wù)。請前往此處克隆項目,并按照自述文件中的說明進(jìn)行設(shè)置。

如何部署?

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

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

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

錯誤!無法在此處為'armv7'構(gòu)建,僅能為'x64'構(gòu)建

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

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

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

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

[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

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

任務(wù)完成了嗎?

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

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

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

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

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

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

這個領(lǐng)域充滿了機遇,我很高興能繼續(xù)學(xué)習(xí)、建設(shè)和與你們分享。如果你正在用Raspberry Pi做令人興奮的事情,并且這些與你產(chǎn)生了共鳴,請與我聯(lián)系!關(guān)注樹莓派開發(fā)者,了解更多樹莓派相關(guān)內(nèi)容!

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Raspberry Pi
    +關(guān)注

    關(guān)注

    2

    文章

    613

    瀏覽量

    22545
  • 樹莓派
    +關(guān)注

    關(guān)注

    118

    文章

    1882

    瀏覽量

    106257
  • NODE.JS
    +關(guān)注

    關(guān)注

    1

    文章

    49

    瀏覽量

    32869
收藏 0人收藏

    評論

    相關(guān)推薦

    Node.js 給前端帶來了什么

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

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

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

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

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

    深入淺出Node.js迷你書

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

    node.jsjs要點總結(jié)

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

    node.js訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)模型識別圖像中物體的方法

    如何在Node.js環(huán)境下使用訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)模型(Inception、SSD)識別圖像中的物體。
    的頭像 發(fā)表于 04-06 13:11 ?9347次閱讀

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

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

    Node.js 內(nèi)存泄漏問題初探

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

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

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

    Raspberry Pi中利用Node-RED控制LED

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

    Node.js網(wǎng)頁控制的機器人小車

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

    介紹Node.js應(yīng)用全鏈路信息獲取的方法

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

    node.js實戰(zhàn)源碼

    node.js實戰(zhàn)源碼
    發(fā)表于 05-16 18:06 ?1次下載

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

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

    Bun 1.2震撼發(fā)布:全力挑戰(zhàn)Node.js生態(tài)的JavaScript運行時新星

    了與 Node.js 的兼容性,還為開發(fā)者帶來了內(nèi)置的數(shù)據(jù)庫支持和云服務(wù)集成能力,進(jìn)一步強化了其“全能工具包”的定位。Node.js 兼容性獲得突破性進(jìn)展在此次更新中,最引人注目的是 Bun
    的頭像 發(fā)表于 01-24 10:42 ?355次閱讀
    Bun 1.2震撼發(fā)布:全力挑戰(zhàn)<b class='flag-5'>Node.js</b>生態(tài)的JavaScript運行時新星

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會員交流學(xué)習(xí)
    • 獲取您個性化的科技前沿技術(shù)信息
    • 參加活動獲取豐厚的禮品
    主站蜘蛛池模板: www色视频在线观看 WWW色视频片内射 | 99在线观看视频免费 | 寂寞夜晚视频在线观看 | 亚洲免费视频在线 | 亚洲精品免费在线 | av先锋影音资源男人站 | 99国产精品白浆在线观看免费 | 我年轻漂亮的继坶2中字在线播放 | 精品无码久久久久久久动漫 | 欧美 亚洲 中文字幕 高清 | 久久6699精品国产人妻 | 漂亮的保姆3中文版完整版 漂亮的保姆3集电影免费观看中文 | 亚洲国产AV精品一区二区蜜芽 | 父皇轻点插好疼H限 | 亚洲精品久久久久AV无码林星阑 | MMM日本兽交 | 四虎永久精品视频在线 | 欧美精品v欧洲高清 | 啊片色播电影 | 久久国产综合精品欧美 | 儿媳妇完整版视频播放免费观看 | 日韩欧美中文字幕一区 | 97视频精品| 久久精品天天中文字幕 | 午夜4k最新福利 | 日本欧美午夜三级 | 草草久久久无码国产专区全集观看 | 欧美成人免费一区二区三区不卡 | 精品国产原创在线观看视频 | 最新亚洲一区二区三区四区 | 蜜桃成人在线 | 午夜一区欧美二区高清三区 | 成年女人免费播放影院 | sao虎影院桃红视频在线观看 | 国产综合在线视频 | 久久精品亚洲国产AV涩情 | 亚洲免费一区 | 欧美国产精品主播一区 | 激情内射亚洲一区二区三区 | 亚洲女人网 | 三级黄毛片 |