React Native -持续错误,如“错误:EPERM:不允许操作,lstat...”

hiz5n14c  于 2023-03-09  发布在  React
关注(0)|答案(7)|浏览(313)

我刚刚接触React Native,但似乎在执行主应用代码之前,我的应用就崩溃了,但我不知道是哪里。在VSCode中,我在输出中看到以下内容:
错误:EPERM:不允许操作,lstat 'c:\Dev\myapp\android\app\build\generated\not_namespaced_r_class_sources\debug\r\com\bumptech\glide\integration\okhttp'在节点监视器示例上发出"错误"事件,位置为:(c:\Dev\myapp\节点模块\sane\src\节点监视器. js:291:16)在FSReqCallback上。完成后(fs. js:176:21){错误编号:-4048,代码:'EPERM',系统调用:"lstat",路径:'c:\Dev\myapp\android\app\内部版本\生成的\未命名空间的类源\调试\r\com\bumptech\glide\集成\okhttp'
我正在尝试找出如何确定这是从哪里来的,以及如何在将来调试类似的错误。

yzckvree

yzckvree1#

我在Windows上使用react-native时也遇到了同样的错误。
我不确定此错误的根本原因,但按照以下步骤操作有助于我解决此问题。
1.在Android Studio上转至文件〉使缓存无效/重新启动*
1.终止本地响应本机服务器
1.然后运行npx react-native start --reset-cachenpm run android
遵循这些步骤在大部分时间里帮助了我。如果有更好的方法来解决这个问题,我也很高兴知道。

uqxowvwt

uqxowvwt2#

在Windows 10上也有类似的问题。如果其他程序在尝试检查更改时访问文件,Sane和Metro的节点观察器模块似乎会抛出错误。其他程序可能是病毒扫描程序,Git,Java,GCC,最后,我修补了NodeWatcher.js和node_watcher. js文件以忽略错误。使用yarn patch-package package-name我在我的项目中存储了必要的更改。NodeWatcher.js中的更改示例:

processChange(dir, event, file) {
const fullPath = path.join(dir, file);
const relativePath = path.join(path.relative(this.root, dir), file);
// Use isIgnorableFileError to ignore EPERM errors on Windows machines
// when watching the file system. E.g. http://bitstopixels.blogspot.com/2017/04/react-native-windows-10-eperm-operation.html
fs.lstat(fullPath, (error, stat) => {
  if (!isIgnorableFileError(error)) {
    this.emit('error', error);
  } else if (!error && stat.isDirectory()) {
    // win32 emits usless change events on dirs.
    if (event !== 'change') {
      this.watchdir(fullPath);

      if (
        common.isFileIncluded(
          this.globs,
          this.dot,
          this.doIgnore,
          relativePath
        )
      ) {
        this.emitEvent(ADD_EVENT, relativePath, stat);
      }
    }
  } else if (!error) {
    const registered = this.registered(fullPath);

    if (error && error.code === 'ENOENT') {
      this.unregister(fullPath);
      this.stopWatching(fullPath);
      this.unregisterDir(fullPath);

      if (registered) {
        this.emitEvent(DELETE_EVENT, relativePath);
      }
    } else if (registered) {
      this.emitEvent(CHANGE_EVENT, relativePath, stat);
    } else {
      if (this.register(fullPath)) {
        this.emitEvent(ADD_EVENT, relativePath, stat);
      }
    }
  }
});

以及

function isIgnorableFileError(error) {
  return (
    error === null || // Allow usage for no error too
    error.code === 'ENOENT' || // Workaround Windows node issue #4337.
    (error.code === 'EPERM' && platform === 'win32')
  );
}

这样我就可以在processChange中使用isIgnorableFileError函数。
我不确定这是否解决了所有问题,但对我来说,它起作用了。现在我可以构建和运行我的应用程序,而不会发生Metro崩溃。

ogq8wdun

ogq8wdun3#

这里的解决方案对我很有效:http://bitstopixels.blogspot.com/2017/04/react-native-windows-10-eperm-operation.html

cd <app_root>/android
./gradlew clean

我还必须禁用<app_root>/android/app/build.gradle中的“爱马仕”

fnx2tebb

fnx2tebb4#

使用转到Android文件夹
cd android && ./gradlew app:installDebug
返回到主文件夹
cd ..
现在运行npx react-native run-android

mnemlml8

mnemlml85#

在大规模升级后恢复,然后升级慢了一点。到目前为止,我已经消除了这些错误,但我还没有完成升级。如果我找到罪魁祸首,我会回复。

vaqhlq81

vaqhlq816#

我在使用react native时多次遇到此错误。
请按照以下简单步骤操作以摆脱此错误:
1.在Android Studio上,转至文件〉使缓存无效。(重新启动)
1.* * 终止服务器**您已通过npm start启动
1.分别运行以下命令。
npxReact-本机启动-重置-缓存
npxReact-原生运行-安卓
大多数我的错误得到解决这样做。

lc8prwob

lc8prwob7#

工作溶液#1

cd android
./gradlew clean
cd ..
npx react-native run-android

工作溶液#2

npx react-native run-android

完成后给你这生成成功消息。再次启动metro服务器

npx react-native start

r
资源
http://bitstopixels.blogspot.com/2017/04/react-native-windows-10-eperm-operation.htmlhttps://stackoverflow.com/a/43217182/5509892

相关问题