簡體   English   中英

錯誤:ENOENT:沒有這樣的文件或目錄,stat ... .steampath

[英]Error: ENOENT: no such file or directory, stat ... .steampath

我正在嘗試在我已經很長時間沒有工作的 React 項目上啟動開發服務器。 在運行npm installnpm start ,我收到標題錯誤消息。
我嘗試手動更新然后降級 Node-sass,但無論我做什么,我仍然遇到相同的錯誤。 這是我收到的完整錯誤消息。

Failed to compile.

./src/App.scss (./node_modules/css-loader/dist/cjs.js??ref--5-oneOf-6-1!./node_modules/postcss-loader/src??postcss!./node_modules/resolve-url-loader??ref--5-oneOf-6-3!./node_modules/sass-loader/dist/cjs.js??ref--5-oneOf-6-4!./src/App.scss)
Error: Node Sass version 5.0.0 is incompatible with ^4.0.0.
/home/dylan/Desktop/Werk/Professional stuff/SkylimitHost/node_modules/react-scripts/scripts/start.js:19
  throw err;
  ^

[Error: ENOENT: no such file or directory, stat '/home/dylan/.steampath'] {
  errno: -2,
  code: 'ENOENT',
  syscall: 'stat',
  path: '/home/dylan/.steampath'
}
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! cleanapp@0.1.0 start: `react-scripts start`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the cleanapp@0.1.0 start 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/dylan/.npm/_logs/2020-11-23T05_19_03_778Z-debug.log

這是完整的日志

0 info it worked if it ends with ok
1 verbose cli [
1 verbose cli   '/home/dylan/.nvm/versions/node/v14.15.0/bin/node',
1 verbose cli   '/home/dylan/.nvm/versions/node/v14.15.0/bin/npm',
1 verbose cli   'start'
1 verbose cli ]
2 info using npm@6.14.8
3 info using node@v14.15.0
4 verbose run-script [ 'prestart', 'start', 'poststart' ]
5 info lifecycle cleanapp@0.1.0~prestart: cleanapp@0.1.0
6 info lifecycle cleanapp@0.1.0~start: cleanapp@0.1.0
7 verbose lifecycle cleanapp@0.1.0~start: unsafe-perm in lifecycle true
8 verbose lifecycle cleanapp@0.1.0~start: PATH: /home/dylan/.nvm/versions/node/v14.15.0/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin:/home/dylan/Desktop/Werk/Professional stuff/SkylimitHost/node_modules/.bin:/home/dylan/.nvm/versions/node/v14.15.0/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
9 verbose lifecycle cleanapp@0.1.0~start: CWD: /home/dylan/Desktop/Werk/Professional stuff/SkylimitHost
10 silly lifecycle cleanapp@0.1.0~start: Args: [ '-c', 'react-scripts start' ]
11 silly lifecycle cleanapp@0.1.0~start: Returned: code: 1  signal: null
12 info lifecycle cleanapp@0.1.0~start: Failed to exec start script
13 verbose stack Error: cleanapp@0.1.0 start: `react-scripts start`
13 verbose stack Exit status 1
13 verbose stack     at EventEmitter.<anonymous> (/home/dylan/.nvm/versions/node/v14.15.0/lib/node_modules/npm/node_modules/npm-lifecycle/index.js:332:16)
13 verbose stack     at EventEmitter.emit (events.js:315:20)
13 verbose stack     at ChildProcess.<anonymous> (/home/dylan/.nvm/versions/node/v14.15.0/lib/node_modules/npm/node_modules/npm-lifecycle/lib/spawn.js:55:14)
13 verbose stack     at ChildProcess.emit (events.js:315:20)
13 verbose stack     at maybeClose (internal/child_process.js:1048:16)
13 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:288:5)
14 verbose pkgid cleanapp@0.1.0
15 verbose cwd /home/dylan/Desktop/Werk/Professional stuff/SkylimitHost
16 verbose Linux 5.4.0-53-generic
17 verbose argv "/home/dylan/.nvm/versions/node/v14.15.0/bin/node" "/home/dylan/.nvm/versions/node/v14.15.0/bin/npm" "start"
18 verbose node v14.15.0
19 verbose npm  v6.14.8
20 error code ELIFECYCLE
21 error errno 1
22 error cleanapp@0.1.0 start: `react-scripts start`
22 error Exit status 1
23 error Failed at the cleanapp@0.1.0 start script.
23 error This is probably not a problem with npm. There is likely additional logging output above.
24 verbose exit [ 1, true ]

我不明白為什么我的服務器無法啟動,我們將不勝感激。

我已經找到了解決方案。 此錯誤只是一個花哨/令人費解的缺少依賴項消息。 如果您安裝了項目所需的所有依賴項(有些可能不在 package.json 文件中),它應該可以正常工作。

此問題是由於缺少某些依賴項引起的。 缺少的依賴項沒有在package.json列出,但正在項目中使用。 在錯誤清除之前,您可以在控制台中看到一瞬間的錯誤。 我不得不記錄我的屏幕並以慢動作查看它以找到丟失的內容並安裝它。

就我而言,這是因為 package.json 中缺少一個包。

yarn startnpm run start沒有幫助我找到丟失的包。 要找到丟失的,請嘗試運行構建命令( yarn build ),構建將退出並顯示以下錯誤詳細信息。

在此處輸入圖片說明

正如上面的截圖所說,缺少一個包(在我的例子中react-dnd-html5-backend )。

如果你趕時間! 沒有時間知道為什么會發生這種情況! 您可以直接移動並滾動到“如何解決它(一種優雅的方式)? ”部分(在最后)! 我正在展示一個強大高效和干凈的解決方案!

問題是什么 ?

整個問題是缺少依賴項 那可以是一個js模塊或一個文件! 可能像字體文件或其他類似資產的東西!

And to note: A good error message is being cleaned! Recompiling!
And then the problem belloww is reached and you get the error!

在此處輸入圖片說明

在此處輸入圖片說明

在此處輸入圖片說明

然后錯誤就來了! 在我的情況下,我們可以看到缺少字體!

但是為什么以及我們如何得到這個錯誤?

駐留在主目錄中的損壞符號鏈接 react-scripts start , running process 檢查! 並且因為它壞了,所以訪問拋出一個is no file or directory錯誤。

在我們的例子中是.steampath 檢查下一節的詳細信息(什么是蒸汽路徑

讓它變得有趣並確認! 我用我的名字創建了一個損壞的符號鏈接 按照字母順序! 會先處理!

在此處輸入圖片說明

在此處輸入圖片說明

在此處輸入圖片說明

是的! 現在這里! 我們有.allalBrokenLink 而不是.steampath 一個快速的解決方案是刪除損壞的符號鏈接 但這不是一個好的解決方案! .steampath有它的目的! 如果您使用的是 Steam 游戲平台! 如果你不! 您可以放心刪除文件!

否則,解決方案非常簡單有效! 在 javascript 調試終端中運行! 並在錯誤發生的地方設置斷點! 所以它會自動暫停! 並且可以輕松簡單地看到問題 如何解決它(一種優雅的方式)中看到這一點 部分!

為什么要檢查主目錄?

首先要說的是! 不是由於 nodejs 模塊解析算法 再次不是由於模塊解析算法

為什么!?

因為模塊分辨率! 說到模塊! 而在需要倒退的情況下! 它倒退到文件系統根目錄! 並且每次檢查node_modules文件夾! 所以如果它達到/home/ 它會直接檢查/home/node_modules 如果有! 如果不是它去/node_modules 你可以看到它不會檢查目錄中的所有文件! 因此不會導致符號鏈接損壞的問題 這是因為某些東西正在遍歷所有文件並檢查它們! 這里不是這樣的!

在這種情況下的算法,除此之外,它還檢查以下內容

此外,Node.js 將在以下 GLOBAL_FOLDERS 列表中搜索:
1:$HOME/.node_modules
2:$HOME/.node_libraries
3: $PREFIX/lib/node

這可以在這里說明! 我在調試時訪問了路徑:

在此處輸入圖片說明

你可以看到它是如何倒退的!

算法清晰! 你可以在這里檢查( ref1ref2

並在此處的打字稿文檔中

我們也可以自己驗證!

首先通過訪問module.paths如下:

在此處輸入圖片說明

我做了一個測試! 一個簡單的測試項目! 我只輸入了一個隨機名稱! 你會得到一個干凈的not found module錯誤! 知道我在相同的環境中進行了測試,但出現以下錯誤!

在此處輸入圖片說明

您可以檢查錯誤類型!

是的,我們沒有提到這個問題! 那這是什么 ??

例如,巴別塔以類似的東西而聞名! 它在哪里尋找.babelrc配置。 然而,就像節點模塊解析一樣,它會向后檢查.babelrc專門檢查.babelrc 以及任何對特定事物有鎖定的決議! 或者在特定的事物中! 會直接查東西! 為什么要檢查其他東西!? 鑒於所有我懷疑它會介於 babel、webpack 和 react-scripts 細節或配置之間! 很可能是一些加載程序或插件的東西! 我嘗試手動調試! 這很費時間! 我開始通過 chrome devtools 協議自動檢測! 我會在收到后立即更新此部分!

什么是蒸汽路徑

游戲 Steam 平台創建的文件。

https://askubuntu.com/questions/1103540/why-is-there-a-steampath-in-my-home-directory

這是一個已知的 Steam 問題:符號鏈接被創建並被故意破壞以與某些游戲仍在構建的舊 Steamworks SDK 兼容。

來自https://github.com/anyc/steam-overlay/issues/206

Steam 每次運行時都會創建符號鏈接 .steampath 指向 $HOME 中不存在的 .steam/sdk32/steam 而它應該指向 .steam/bin32/steam。

不要刪除或更改此符號鏈接,它存在並被故意破壞以提供在 ValveSoftware/steam-for-linux#5245 中跟蹤的舊版 Steamworks 兼容性。

(~/.steam/sdk32/什么都是需要的)

所以如果你使用蒸汽 您可能不想刪除此文件!

如何解決它(一種優雅的方式)?

如果你什么都不記得! 您可以find in folder > node_modules find in folder 並搜索Failed to compile 通常你會永遠記住!

確保選擇第二個找到的元素!

在此處輸入圖片說明

知道您也可以,只需打開文件搜索托盤 (CTRL + P)

搜索devServerUtils

在此處輸入圖片說明

並在文件中再次搜索!

在此處輸入圖片說明

那可能會更快!

在此之后,您設置斷點,如下圖所示!

並啟動調試器終端!

知道您只需要return 語句上的斷點

在此處輸入圖片說明

您也可以使用process.exit() 但我更喜歡使用調試器! 因為它更干凈和簡單!

在這里你如何啟動一個 javascript 調試終端!

在此處輸入圖片說明

運行npm start 在那個調試器終端中!

在此處輸入圖片說明

執行會在斷點處自動停止 而且您將能夠輕松閱讀並簡單地了解問題所在

在此處輸入圖片說明

一次就知道一次! 您可以稍后在需要時啟動javascript 調試終端 你會得到它的工作! 因為你的斷點還在那里!

無需任何知識即可這樣做!

仍然如果不熟悉調試器! 並想更好地了解它!

您可以在此處檢查 nodejs 進程和 javascript 調試終端的調試器自動附加

調試一般

將 node-sass 降級到版本 4 后,重新啟動您的開發服務器。

一定要檢查你的進口! 我正在使用 VS 代碼並遇到了同樣的問題,因為我沒有做

import {useHistory} from 'react-router-dom'

// I did (well, actually vscode did it by performing incorrect autoimport)
import {useHistory} from 'react-router'

解決了查看此日志,npm 清除屏幕並丟失所有這些信息。

npm start > log.txt

缺少一些包。 就我而言,它是@reduxjs/toolkit。

就我而言,它有助於在yarn start之前運行yarn install

暫無
暫無

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

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