错误:ENOENT:没有这样的文件或目录,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 ]

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

原文由 imstupidpleasehelp 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.2k
2 个回答

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

原文由 imstupidpleasehelp 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

问题是什么 ?

整个问题是 缺少依赖!那可以是一个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 启动,运行过程检查!并且因为它被破坏了访问抛出 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:$前缀/库/节点

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

在此处输入图像描述

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

算法清晰!你可以在这里查看( ref1ref2

此处 的打字稿文档中

我们也可以自己验证!

首先通过访问 module.paths 如下所示:

在此处输入图像描述

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

在此处输入图像描述

你可以检查错误类型!

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

例如,Babel 就以类似的东西而闻名!它在哪里寻找 .babelrc 配置。然而,就像节点模块解析一样,它会倒退并检查 .babelrc 特别是!以及任何对特定事物有锁定的决议!或在特定的事物中!会直接查东西! 为什么还要检查其他东西!? 考虑到所有这些,我怀疑它会介于 babel、webpack 和 react-scripts 细节或配置之间!而且很可能是一些加载器或插件的东西!我试着手动调试!这很费时间!我移动到通过 chrome devtools 协议自动检测!我会尽快更新此部分!

什么是蒸汽路径

Game 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 每次运行时都会在 $HOME 中创建指向不存在的 .steam/sdk32/steam 的符号链接 .steampath,而它应该指向 .steam/bin32/steam。

不要删除或更改此符号链接,它存在并被故意破坏以提供旧版 Steamworks 兼容性,正如在 ValveSoftware/steam-for-linux#5245 中所跟踪的那样。

(~/.steam/sdk32/anything 是所需要的)

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

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

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

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

在此处输入图像描述

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

搜索 devServerUtils

在此处输入图像描述

并在文件中再次搜索!

在此处输入图像描述

那可能会更快!

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

并启动调试器终端!

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

在此处输入图像描述

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

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

在此处输入图像描述

运行 npm start !在那个调试器终端!

在此处输入图像描述

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

在此处输入图像描述

知道一旦完成一次!您可以稍后在需要时启动一个 javascript 调试终端!你会成功的!因为你的断点仍然存在!

这样做不需要任何知识!

还是不熟悉调试器!并想更好地了解它!

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

调试也一般

原文由 Mohamed Allal 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题