Manjaro

在 Manjaro 上的 nvm 中執行節點問題 - 可能是作業系統級別錯誤,但不確定,因為我是初學者

  • January 12, 2020

我加入來問這個問題,因為它看起來不像是堆棧溢出問題。

問題:在 nvm 上執行的 Node 和 npm 已安裝並正常工作,但在出現錯誤時(我嘗試過的)沒有任何工作。我懷疑錯誤出在作業系統級別(權限或文件問題),但我不確定如何解決這些問題。您能否告訴我出了什麼問題(如果下面有足夠的資訊)或在哪裡尋找解決方案(如果下面的資訊不夠或不正確)。

我在 Manjaro 上已經有一段時間了,我仍然是 Linux 的初學者。我一直在使用 NVM 來管理多個 node.js 版本,而不久前它停止了工作。我有時只使用我的電腦,我認為這是一些節點問題,但今天我進去完全刪除了 nvm/node,然後重新安裝了它們。然後我嘗試啟動一個標準的 NUXT 應用程序,但它失敗了,所以我認為它是在作業系統級別。

我安裝了 NVM,然後安裝了 LTS 節點(12.14),然後我嘗試了一個新的 nuxt 項目:

npx create-nuxt-app test

回答所有問題,開始灌輸……很多錯誤 - 但它結束了……錯誤範例:

../lib/kerberos.cc: In static member function ‘static Nan::NAN_METHOD_RETURN_TYPE Kerberos::AuthGSSServerStep(Nan::NAN_METHOD_ARGS_TYPE)’:
../lib/kerberos.cc:802:44: error: no matching function for call to ‘v8::Value::ToObject()’
 802 |   Local<Object> object = info[0]->ToObject();
     |                                            ^
In file included from /home/un/.cache/node-gyp/12.14.0/include/node/node.h:63,
                from ../lib/kerberos.h:4,
                from ../lib/kerberos.cc:1:
/home/un/.cache/node-gyp/12.14.0/include/node/v8.h:2576:44: note: candidate: ‘v8::MaybeLocal<v8::Object> v8::Value::ToObject(v8::Local<v8::Context>) const’
2576 |   V8_WARN_UNUSED_RESULT MaybeLocal<Object> ToObject(
     |                                            ^~~~~~~~
/home/un/.cache/node-gyp/12.14.0/include/node/v8.h:2576:44: note:   candidate expects 1 argument, 0 provided

node-gyp 似乎是錯誤中的常見項目,npm 頁面說它是“用於為 Node.js 編譯本機外掛模組”,這就是為什麼我認為這是一個作業系統級別的問題。

所以應用程序已設置,但是當我嘗試執行時

npm run dev

我得到以下資訊:


> test@1.0.0 dev /home/un/test
> nuxt

sh: /home/un//test/node_modules/.bin/nuxt: Permission denied
npm ERR! code ELIFECYCLE
npm ERR! errno 126
npm ERR! test@1.0.0 dev: `nuxt`
npm ERR! Exit status 126
npm ERR! 
npm ERR! Failed at the test@1.0.0 dev script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/un/.npm/_logs/2020-01-03T15_35_00_168Z-debug.log

不熟悉 node/npm/NUXT 的人請注意:這只是標準的灌輸過程。我這裡沒有自定義程式碼,這是很多人一直用來啟動項目的,所以我不明白為什麼它不工作(尤其是當它曾經工作時)。

我想知道“權限被拒絕”是否意味著這是一個使用者訪問問題,但我不知道如何檢查。

在進行系統更新時,我還會收到一些關於文件較新的錯誤。

我將不勝感激任何幫助。如果您沒有解決方案,那麼至少就可能出現的問題或在哪裡尋找解決方案提供一些建議。

如果您需要任何其他資訊,請告訴我。

還不確定要添加哪些其他標籤?文件錯誤、灌輸、更新問題

編輯:文件權限:.nvm/versions/v12.14.0 中的節點是 -rwxr-xr-x 而 npm 和 npx 是 lrwxrwxrwx 連結到實際的 npm 與 -rwxr-xr-x 但實際的 npx 是 -rw-r –r– (使用者沒有執行檔)但我從未更改過這些,就像我說的那樣,它曾經可以工作。node_modules中的每個文件夾都有drwxr-xr-x,我查看了一個文件夾,js文件是-rw-r–r–(但我假設它們是JavaScript,它們不需要執行……

Edit2:我剛剛注意到我的 node_modules 文件夾中沒有 .bin 文件夾,並且根本沒有 nuxt 文件夾,但我認為這將是一個找不到文件的錯誤,而不是“權限被拒絕”。

然後我嘗試chmod 775 -R node_modules再次執行建構。這次它創建了 .bin 文件,但在 webpack 上仍然失敗(node_modules/.bin/webpack: Permission denied),儘管這個連結是 lrwxrwxrwx 並且原始文件是 -rwxrwxr-x

雖然這使事情發生了變化,但我仍然無法啟動該項目。我也認為這不是處理這個問題的正常方式。如果是,網站會說這是一項要求。

好的,問題不是我所期望的。我的節點文件放在 btrfs 硬碟上。似乎這就是它不起作用的原因。

我已將它們移到那裡,但我認為它仍在工作,要麼是錯誤,要麼開始不起作用。

無論如何,將文件移動到我的主 HD (ext4) 已經解決了這個問題。

正如您想知道的那樣,我認為這是一個許可問題。嘗試檢查您所在的使用者是否可以執行文件/home/un//test/node_modules/.bin/nuxt並檢查文件夾/home/un//test/node_modules/.bin/是否沒有設置 SUID 或/和 SGID 位。我猜不是,因為 node_modules 文件夾是由 npm 自動生成的,但我認為您應該根據您將執行該服務的使用者帳戶遞歸地授予整個目錄的權限。

引用自:https://unix.stackexchange.com/questions/560168