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

ims*_*elp 19 javascript npm reactjs visual-studio-code

我正在尝试在一个我很久没有参与过的 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
Run Code Online (Sandbox Code Playgroud)

这是完整的日志

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 ]
Run Code Online (Sandbox Code Playgroud)

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

Moh*_*lal 20

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

问题是什么 ?

整个问题是缺少依赖关系!那可以是一个js模块或一个文件!就像字体文件或其他类似资产的东西!

And to note: A good error message is being cleaned! Recompiling!
And then the problem belloww is reached and you get the error!
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

在此输入图像描述

在此输入图像描述

然后错误就来了!我们可以看到我的案例中缺少字体!

但是我们为什么以及如何得到这个错误呢?

主目录中的符号链接已损坏!这已通过react-scripts start、运行过程进行了检查!因为它被破坏了,所以访问会抛出错误is no file or directory

在我们的例子中是这样.steampath!检查下一节的详细信息(什么是 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!以及任何对特定事物有锁定的决议!或者在特定的事物中!会直接检查东西!为什么要检查其他东西!?考虑到所有这些,我怀疑这会是 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 每次运行时都会在 $HOME 中创建指向不存在的 .steam/sdk32/steam 的符号链接 .steampath,而它应该指向 .steam/bin32/steam。

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

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

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

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

如果你什么都不记得了!你可以直接去find in folder> node_modules!并寻找Failed to compile!一般来说,您会永远记住这一点!

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

在此输入图像描述

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

搜索devServerUtils

在此输入图像描述

并在文件中再次搜索!

在此输入图像描述

这样可能会更快!

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

并启动调试器终端!

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

在此输入图像描述

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

下面介绍如何启动 javascript 调试终端!

在此输入图像描述

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

在此输入图像描述

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

在此输入图像描述

知道一次就完成一次!您稍后可以在需要时启动javascript 调试终端!你就会让它发挥作用!因为你的断点仍然存在!

不需要任何知识即可这样做!

如果还不熟悉调试器的话!并想进一步了解它!

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

还可以进行一般性的调试


ims*_*elp 14

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

  • 我正在使用“react-scripts@4.0.2”,我注意到我可以通过查看导入错误来查看我忘记安装的依赖项,这些错误在控制台清除之前显示了几分之一秒,并且此错误是显示 (7认同)
  • 我必须对 CLI 日志进行屏幕记录,然后以慢动作观看以捕获未找到模块的错误以及丢失模块的名称,哈哈。另外,另一种方法是再次安装所有软件包并观察显示“未满足对等依赖关系”的日志,然后安装它们。 (2认同)
  • 感谢这个答案以及评论,我能够运行“yarn start &gt; output.txt”,它将错误消息(缺少的模块)转储到文件“output.txt”。这是如此奇怪的行为,而且它特别调用“.steampath”这一事实让我想知道我的node_modules中是否存在恶意软件...... (2认同)

tmh*_*tmh 12

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

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

在此输入图像描述

正如上面的屏幕截图所示,缺少一个包(在我的例子中react-dnd-html5-backend)。


小智 5

此问题是由于缺少某些依赖项而引起的。缺少的依赖项未在 中列出package.json,但正在项目中使用。您可以在控制台中看到该错误,然后它就会被清除。我必须录制我的屏幕并以慢动作查看它,以找到缺少的内容并安装它。