簡體   English   中英

Express.js:沒有這樣的文件或目錄

[英]Express.js: No Such file or directory

我用apt-get install nodejs安裝了節點。 然后我用apt-get install npm 現在當我嘗試運行express我得到

$ express 
/usr/bin/env: node: No such file or directory

如何解決此錯誤?

Ubuntu 中有兩個名稱相似的包, nodenodejs

node這樣做,

說明-en:業余分組無線電節點程序。 節點程序接受 TCP/IP 和分組無線電網絡連接,並為用戶提供一個界面,允許他們使用各種業余無線電協議與遠程主機建立網關連接。

nodejs這樣做,

描述-zh:Node.js 基於事件的服務器端 javascript 引擎 Node.js 在設計上類似於 Ruby 的 Event Machine 或 Python 的 Twisted 等系統,並受其影響。 它將事件模型更進一步——它將事件循環呈現為一種語言結構而不是一個庫。 Node.js 捆綁了幾個有用的庫來處理服務器任務:系統、事件、標准 I/O、模塊、計時器、子進程、POSIX、HTTP、多部分解析、TCP、DNS、斷言、路徑、URL、查詢字符串。

Fedora 也遵循類似的包命名方案。 因此,必須將nodejs的二進制文件從原始node重命名為nodejs 然而,這在技術上並不符合:大多數 nodejs 程序(和使用 npm 安裝的庫)都假設 node 二進制文件是node 如果你想解決這個問題,最簡單的方法就是將兩者符號鏈接在一起。 如果你走這條路,不要安裝處理業余分組無線電內容的node包。

sudo ln -s /usr/bin/nodejs /usr/local/bin/node

或者,在 node 的情況下,我建議使用n而不是安裝node 只需安裝 npm(將安裝 node),然后刪除 npm,然后告訴 apt 清理它。 為此,只需運行

sudo apt-get install npm
sudo npm install -g n
sudo n latest
sudo apt-get --purge remove npm
sudo apt-get autoremove

還有其他二進制發行版管理器甚至可以從像nvm這樣的 shell 腳本工作,但我個人更喜歡n n視為僅用於一件事的 apt:它安裝到/usr/local/bin的節點二進制文件。

為什么要刪除 npm? 不是。 apt-get --purge remove只能刪除包管理器安裝的東西。 n latest包管理器之外的n latest作品。 如果你這樣做,有兩個 npm,

  1. 發行版(Debian/Ubuntu)使用apt-get安裝的版本。
  2. n latest安裝的版本。

擁有發行版的舊版本毫無意義。 而且,更糟糕的是,如果該版本有效,它可能會安裝到不同的位置,並在其中進行 Debian 修改,假設 Debian 安裝目錄。 最好使用其中之一/或但不要同時使用。

你應該安裝 nodejs-legacy 包,它有一個從 /usr/bin/node 到 /usr/bin/nodejs 的鏈接

$ sudo apt-get install nodejs-legacy

就我而言,這是因為在我的PATH環境變量中,我有“~/progs/node/bin/”,而“~”似乎沒有被env解析......用真正的完整路徑替換它(“/ home/myuser/node/bin") 解決了我的問題。

這個解決方案

export PATH="$HOME/opt/nodejs/bin:$PATH"

為我解決了這個問題(假設 $HOME 變量設置正確,它應該可以工作)。 它還允許我避免對我的主目錄的路徑進行硬編碼(例如,如果需要,我可以使用不同的帳戶/服務器重用我的 .bash_profile)

在 cmd 中執行此操作

sudo apt-get install nodejs-legacy
chmod your folder 700 (optional)

免責聲明:僅適用於通過部署工具運行的 bash 命令

注意:在遠程服務器中,如果您可以運行 node 命令,但通過部署工具(如 shipit server)拋出/usr/bin/env: 'node': No such file or directory 創建符號鏈接將解決錯誤。

sudo ln -s $(which node) /usr/bin/node
sudo ln -s $(which npm) /usr/bin/npm
sudo ln -s $(which pm2) /usr/bin/pm2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM