错误:ENOENT:没有这样的文件或目录,stat ... .steampath

IT技术 javascript reactjs npm visual-studio-code
2021-05-04 20:27:18

我正在尝试在我很久没有参与过的 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 ]

我不明白为什么我的服务器无法启动,任何帮助将不胜感激。

4个回答

我已经找到了解决方案。此错误只是一个花哨/令人费解的缺少依赖项消息。如果您安装了项目所需的所有依赖项(有些可能不在 package.json 文件中),它应该可以正常工作。

如果你赶时间!没有时间知道为什么会发生这种情况!您可以直接移动并滚动到“如何解决它(一种优雅的方式)? ”部分(在最后)!我正在展示一个强大的高效和干净的解决方案!

问题是什么 ?

整个问题是缺少依赖项那可以是一个jsmodule或一个文件!可能像字体文件或其他类似资产的东西!

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一个快速的解决方案是删除损坏的符号链接但这不是一个好的解决方案!borken.steampath有它的目的!如果您使用的是 Steam 游戏平台!如果你不!您可以放心删除文件!

否则,解决方案非常简单有效!在 javascript 调试终端中运行!并在错误发生的地方设置断点!所以它会自动暂停!并且可以轻松简单地看到问题如何解决它(一种优雅的方式)中看到这一点部分!

为什么要检查主目录?

首先要说的是!不是由于 nodejs module解析算法再次不是由于module解析算法

为什么!?

因为module分辨率!说到module!而在需要倒退的情况下!它倒退到文件系统根目录!每一次 检查node_modules文件夹!所以如果达到/home/它会直接检查/home/node_modules如果有!如果不是它去/node_modules你可以看到它不会检查目录中的所有文件!因此不会导致符号链接损坏的问题这是因为某些东西正在遍历所有文件并检查它们!这里不是这样的!

在这种情况下的算法,除此之外,它还检查以下内容

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

这可以在这里说明!我在调试时访问了路径:

在此处输入图片说明

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

算法清晰!你可以在这里查看(ref1 , ref2

并在此处的typescript文档中

我们也可以自己验证!

首先通过如下访问module.paths

在此处输入图片说明

我做了一个测试!一个简单的测试项目!我只输入了一个随机名称!你会得到一个干净的not found module错误!知道我在相同的环境中进行了测试,但出现以下错误!

在此处输入图片说明

您可以检查错误类型!

是的,我们没有提到这个问题!那这是什么 ??

例如,巴别塔以类似的东西而闻名!它在哪里寻找.babelrc配置。但是,就像节点module解析一样,它会向后进行并.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/anything 是需要的)

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

如何解决它(一种优雅的方式)?

如果你什么都不记得!你可以去find in folder> node_modules并搜索Failed to compile通常你会永远记得!

确保选择第二个找到的元素!

在此处输入图片说明

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

搜索 devServerUtils

在此处输入图片说明

并在文件中再次搜索!

在此处输入图片说明

那可能会更快!

在此之后,您设置断点,如下图所示!

并启动调试器终端!

知道您只需要return 语句上的断点

在此处输入图片说明

您也可以使用process.exit()但我更喜欢使用调试器!因为它更干净和简单!

在这里你如何启动一个 javascript 调试终端!

在此处输入图片说明

npm start在那个调试器终端中!

在此处输入图片说明

执行会在断点处自动停止而且您将能够轻松阅读并简单地了解问题所在

在此处输入图片说明

一次就知道一次!您可以稍后在需要时启动javascript 调试终端你会得到它的工作!因为你的断点还在那里!

这样做不需要任何知识!

仍然如果不熟悉调试器!并想更好地了解它!

您可以在此处检查 nodejs 进程和 javascript 调试终端的调试器自动附加

调试一般

就我而言,这是因为 package.json 中缺少一个包。

yarn start或者npm run start没有帮我找到丢失的包裹。要找到丢失的,请尝试运行构建命令 ( yarn build),构建将退出并显示以下错误详细信息。

在此处输入图片说明

正如上面的屏幕截图所说,缺少一个包(在我的情况下react-dnd-html5-backend)。

此问题是由于缺少某些依赖项引起的。缺少的依赖项未在 中列出package.json,但正在项目中使用。在错误清除之前,您可以在控制台中看到一瞬间的错误。我不得不记录我的屏幕并以慢动作查看它以找到丢失的内容并安装它。