[facebook/react-native]打包程序看不到文件的更改。重新加载不起作用。

2024-03-05 330 views
9

当我第一次开始我的项目时,重新加载而不重新编译就可以了。一路上的某个地方我打破了这一点。

当我从 Xcode 运行该项目时,打包器终端窗口可以正常打开,但它看不到我对 JS 文件所做的更改。我使用 Atom 作为我的编辑器。

就目前而言:React 打包器已准备就绪。

[上午 11:06:24] 爬网文件系统 (7704ms) [11:06:24 AM]为 JavaScript 构建内存中文件系统 [11:06:26 AM] 为 JavaScript 构建内存中文件系统 (2430ms) [11:06:26 AM]建造急速地图 [11:06:28 AM] 构建急速地图(2290ms)[11:06:28 AM] 构建依赖关系图(12430ms)

我试过卸载守望者。更新和升级自制程序。杀死进程并重新启动。重新启动计算机。似乎没有什么可以让它回到原来的方式。

回答

8

@lernerbot 应用程序正在加载吗?我在终端输出中没有看到对该包的网络请求。

StackOverflow 和 Discord #react-native 频道是获得此类问题帮助的最佳方式。

3

我有同样的问题。当我更改文件时,打包程序突然停止捆绑。这已经工作了几个月,没有出现任何问题。

我发现我的 .git/ 目录有一个 index.lock 文件。当我删除该文件后,自动重新捆绑再次开始工作。

8

我对此感到疯狂,两者react-native start似乎react-native bundle都停留在我的代码的旧版本上,该版本不再存在于任何地方!清理、删除、重新克隆我的存储库没有帮助......

[编辑]重新启动我的计算机似乎可以解决问题......

4

我也明白了。这似乎是一个守望者错误,因为运行

  • watchman watch-del-all

然后重新加载即可。我用的是守望者4.3.0——其他人都用什么版本?

2

嗯,降级为守望者4.1.0似乎有助于解决这个问题。

0

对我来说,它有助于使用选项 --verbose 启动react-native包,从日志中获取缓存目录(对我来说,它的 /var/folders/jf/j39xsb090795rm8l98qjdff80000gn/T/ )并执行 rm react-packager * 在那里。之后,它再次使用最新版本的文件。

4

我和守望者遇到了同样的问题3.9.0

7

鉴于这个问题似乎与许多不同的情况和问题有关,而且守望者已经取得了进展,我们将结束这个问题,转而采用更多可重现的示例。

如果您遇到此问题,请尝试删除上面提到的打包程序缓存,或watchman watch-del-all在提交另一个问题之前删除该命令。谢谢!

1

我在 Windows 上的 Packager 也遇到同样的问题。执行初始任务时速度太慢(可能需要等待 5-10 分钟才能准备好请求)。

对文件进行一些修改后,.jsut 不会重新加载应用程序,甚至不会热重新加载。

启用实时重新加载/热重新加载也不起作用。

将节点更新到 6.2.0 和 npm v 3.8.9 但所有 deps 都是通过 Node 4.4.5 安装的

更新节点后,但仍然未检测到文件更改,打包程序会根据每个请求提供旧的应用程序包。

谢谢!

8

是的。和Harry008有同样的问题。

3

在windows下也有同样的问题。打包程序正在提供旧文件,我不知道缓存在哪里......

9

@anraiki 它也解决了我的问题。谢谢哟。

2

@anraiki @yooneskh 如何替换看守人?同样的问题。

"react": "15.2.1",
"react-native": "0.30.0",

操作系统:windows7

我下载新的 watchman,将其添加到 PATH 中
(当前路径是 E:\temp2\RouterTest)

  1. 守望者 守望者
  2. 看守者监视 E:\temp2\RouterTest
  3. 反应本机启动
  4. 在 genymotion 上重新加载 js 我收到错误index.android.js not found。然后我更改了index.android.js中的一些行并再次重新加载js。我在终端中收到此错误
[23:06:27] <END>   find dependencies (2354ms)
Error: Unable to find file with path: E:\temp2\RouterTest\node_modules\react-nat
ive\packager\react-packager\src\Resolver\polyfills\prelude.js
    at Fastfs.readFile (E:\temp2\RouterTest\node_modules\react-native\node_modul
es\node-haste\lib\fastfs.js:141:15)
    at E:\temp2\RouterTest\node_modules\react-native\node_modules\node-haste\lib
\Module.js:168:49
    at Cache.get (E:\temp2\RouterTest\node_modules\react-native\node_modules\nod
e-haste\lib\Cache\index.js:64:103)
    at Polyfill.read (E:\temp2\RouterTest\node_modules\react-native\node_modules
\node-haste\lib\Module.js:167:26)
    at Bundler._toModuleTransport (index.js:549:14)
    at module._toModuleTransport.then (index.js:394:14)
    at Array.map (native)
    at index.js:411:48
    at tryCallOne (E:\temp2\RouterTest\node_modules\react-native\node_modules\pr
omise\lib\core.js:37:12)
    at E:\temp2\RouterTest\node_modules\react-native\node_modules\promise\lib\co
re.js:123:15
1

我这里也有同样的问题。谁能帮我吗?看来我的包装商没有捆绑它。每次我进行更改并执行 Cmd+R 时,它都会闪烁屏幕,但不会加载任何更改。

Xcode 7.3 守望者 4.6 反应本机 0.30

3

同上@k0mikus,在除 RN 0.31 之外的相同版本上,react-native start似乎也没有在启动时进行任何捆绑。

7

@thomasvm 删除 .git/index.lock 也对我有用。

8

在 Windows 7 上,我将 Node 和 npm 更新到最新版本,这解决了我的问题。

3

就我而言,发生这种情况是因为我不小心删除了守望者。奇怪的是没有错误信息。一旦我重新安装了守望者并重新运行,npm start就会出现大量排队的重新加载。我不得不再次终止服务器,运行watchman watch-del-all,然后重新运行npm start,一切都很好。这也解决了我遇到的一个问题,即find dependencies打包程序的初始步骤非常慢。

4

我遇到了同样的问题,使用yarn, 而不是通常的npm. 结果yarn.lock导致看守人停止寻找变化。

WUT。应该有人关注它,特别是因为博客上现在支持纱线

所以试试这个: $ rm yarn.lock $ npm start

我的规格: node v6.9.1 watchman 4.7.0 Sierra OSX (10.12.11)

感谢 @thomasvm/.git/index.lock评论提供线索

1

我运行watchman watch-del-all && watchman shutdown-server,删除yarn.lock,并且我在git上没有锁。什么都不起作用。

watchman v4.7.0 node v7.1.0 macOS Sierra (10.12.1) RN 0.37(但也发生在 0.35 上)

昨天 RN 打包程序停止工作,它冻结在这里:

本机 ios git:(master) ✗ npm start

mural@0.0.1 start /Users/neiker/native-ios 节点 node_modules/react-native/local-cli/cli.js start

所以我删除了watchman并重新安装它。现在打包器似乎工作正常,但当我进行更改时不要重建。

6

对于仍然遇到此问题的人,我找到了另一个原因:

实时重新加载不起作用:
  1. 检查根目录下是否有.lock文件,如果有,watchman将忽略目录中的更改,Live Reload 将失败。如果您运行react-native init MyProjectyarn安装了,您的项目文件夹的根目录中可能会有一个yarn.lock文件,如上所述。

  2. watchman[我的问题] 可能存在无法实际观察文件更改的问题。即使看起来watchman正在运行,但实际上可能并未运行。即使使用watchman watch-list来验证您的项目是否正在被监视,也不能保证它正在工作。

您需要先关闭 React Native 应用程序,然后才能继续下一步。如果您通过以下方式运行该应用程序,npm start则只需停止该进程即可。如果您正在运行模拟器,则需要关闭所有这些。

接下来您需要删除watchman用户目录。

rm -fr /usr/local/var/run/watchman/$USER-state

现在您应该能够按照您想要的方式重新启动应用程序,并且实时重新加载应该可以很好地进行。我的实时重新加载问题只能通过使用此方法来解决。

6

@neiker 只是专门给您一个说明,因为您似乎也遇到了与我相同的问题,我的最后一条评论是对我有用的解决方案。如果它也能解决您的问题,我会很好奇。

基本上,watchman在启动时处于某种状态,一定是幕后出了问题,并且处于watchman不稳定状态。在未运行时删除用户的特定状态文件夹watchman可以使其在下次启动时重置。

watchman当然,这似乎更像是 的问题,但由于它是由 实例化的,react-native因此无法透明地查看何时失败,因此可能有一个解决方案来监视这个特定问题。watchmanreact-nativereact-native

0

非常感谢@manifestinteractive!

我被这个问题困扰了两天并rm -fr /usr/local/var/run/watchman/$USER-state已修复。

2

@MarlBurroW我认为从技术上讲,$USER-state目录中最终有一个PID来自试图运行但由于某种原因失败的守望者实例的挥之不去的文件。那里似乎还有一个任务文件,用于记录要观看的内容。因此,它看起来好像以某种方式watchman排队react-nativewatchman报告它正在正确运行,但react-native由于目录中存在一些损坏,要求监视的特定目录实际上甚至无法被监视$USER-state。100% 清除它是我能 100% 确定一切会正确重置的唯一方法。它可能不需要完全清除,如果有人知道实际导致问题被删除的特定文件,那就太好了。

我不确定是否有可能以react-native某种方式检查此故障。由于它是透明发生的(因为react-native实际上是排队的watchman),因此似乎需要进行一些 QA 检查,以确保watchman实际收到的命令可能是按顺序排列的(如果尚未按顺序排列)。

4

@manifestinteractive 抱歉,我没用,我上周换了电脑,从头开始。

4

我一整天都在搞这个,而且我成功了。所以,如果它对任何人有帮助,我所做的就是npm uninstall yarnyarn有一个.lock文件,但只是删除它不起作用。之后我就跑了npm start,一切正常。

.lock(我想,为了将来的参考,首先在可能存在的位置搜索文件并将其删除)

6

@manifestinteractive 抱歉修正了我的错误:)

3

不幸的是,所提出的解决方案都不适合我。我的项目中的热重载似乎在一夜之间停止工作。(我看到小指示器写着“热重新加载”,但视图没有更新到我的更改,我每次都必须硬重新加载)。

XCode 8.2.1 反应本机 0.40 守望者 4.7.0

编辑:它确实有效,只是由于某种原因不重新加载我的一些嵌套组件。

1

嗨,大家好。在我卸载yarn并删除yarn.lock文件和.git/index.lock文件后,仍然对我不起作用。


react-native-cli: 2.0.1
react-native: 0.42.0
8

以@manifestinteractive 所说的为基础。我所做的就是解决这个问题

辅助 | grep watchman Kill -9 "watchman pid"

这是一个充满野性的呼唤。谢谢!

9

我使用打字稿,它对帖子没有任何帮助。然后我更改了文件 tsconfig.json,现在它工作正常。:+1:

tsconfig.json:

{
    "compilerOptions": {
        "module": "commonjs",
        "target": "es6",
        "jsx": "react",
        "allowJs": true,
        "sourceMap": true
    }
}
8

做一个

find /path/to/app -name '*.lock'

我有:

/path/to/app/android/.gradle/3.3/taskArtifacts/taskArtifacts.lock
/path/to/app/android/.gradle/3.3/tasks/_app_compileDebugJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.lock
/path/to/app/android/.gradle/3.3/tasks/_app_compileDebugJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.lock
/path/to/app/android/.gradle/3.3/tasks/_react-native-i18n_compileReleaseJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.lock
/path/to/app/android/.gradle/3.3/tasks/_react-native-i18n_compileReleaseJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.lock
/path/to/app/android/.gradle/3.3/tasks/_react-native-share_compileReleaseJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.lock
/path/to/app/android/.gradle/3.3/tasks/_react-native-share_compileReleaseJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.lock
/path/to/app/android/.gradle/3.3/tasks/_react-native-vector-icons_compileReleaseJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.lock
/path/to/app/android/.gradle/3.3/tasks/_react-native-vector-icons_compileReleaseJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.lock
/path/to/app/android/.gradle/3.3/tasks/_realm_compileReleaseJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.lock
/path/to/app/android/.gradle/3.3/tasks/_realm_compileReleaseJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.lock
/path/to/app/android/.gradle/4.0-20170417000025+0000/fileContent/fileContent.lock
/path/to/app/android/.gradle/4.0-20170417000025+0000/fileHashes/fileHashes.lock
/path/to/app/android/.gradle/4.0-20170417000025+0000/javaCompile/javaCompile.lock
/path/to/app/android/.gradle/4.0-20170417000025+0000/taskHistory/taskHistory.lock
/path/to/app/android/.gradle/4.0-milestone-1/fileHashes/fileHashes.lock
/path/to/app/android/.gradle/buildOutputCleanup/cache.properties.lock
/path/to/app/ios/Podfile.lock
/path/to/app/ios/Pods/Manifest.lock
/path/to/app/node_modules/envinfo/yarn.lock
/path/to/app/node_modules/fileset/yarn.lock
/path/to/app/node_modules/jsx-ast-utils/yarn.lock
/path/to/app/node_modules/react-native-fs/android/.gradle/3.5/taskHistory/taskHistory.lock
/path/to/app/node_modules/react-native-fs/yarn.lock
/path/to/app/node_modules/react-native-i18n/example/yarn.lock
/path/to/app/node_modules/realm/tests/.lock

所以我删除了它们:

find /path/to/app -name '*.lock' -exec rm -vfr "{}" \;

现在正在工作(我不确定此操作是否解决了问题)。

4

我的解决方案 - 从项目根目录的 app.json 文件中删除项目

"packagerOpts": {        "nonPersistent": "--nonPersistent"      }

5

@thomasvm你是对的。删除 .git 目录中的 index.lock 文件后,我可以通过重新加载来看到更新。多谢

8

我遇到了类似的问题,RN 0.52 中对 index.js 的更新没有在实际手机上更新。终于发现rm -rf node_modules && npm install成功了。

5

_# ###解决方案

React-Native Bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src /主/资源

输出将是: c:\Users\lenger\Desktop\webrowser>react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/ index.android.bundle --assets-dest android/app/src/main/res 扫描文件夹中的符号链接 c:\Users\lenger\Desktop\webrowser\node_modules (43ms) 扫描文件夹中的符号链接 c:\Users\lenger \Desktop\webrowser\node_modules (38ms) 加载依赖关系图,完成。捆绑:开始捆绑:完成捆绑:将捆绑输出写入:android/app/src/main/assets/index.android.bundle捆绑:完成写入捆绑输出

之后

再次运行react-native run-android,你会发现你的修改工作。

来自https://lengerrong.blogspot.am/2018/01/react-native-run-android-do-not.html

6

如果一切都失败,请检查您的代码并查看是否导入了尚未安装的模块。有时 RN 会默默地失败并显示最后的工作代码。

3

有人知道为什么 watchman 仅仅被 .lock 文件关闭吗?

6

检查您是否在模拟器中启用了热重载。默认情况下可能未启用它。按Ctrl+M并选择Enable Hot Reloading

7

听起来很傻。但是,它对我不起作用,因为我在带有发布配置的 XCode 上运行它。将其更改为“调试”有效。

5

这种情况仍在发生。为什么...

.git 目录中的 index.lock 杀死了看守人......

2

如果您使用的是 Expo,请尝试在 packager-info.json 中配置此设置

{
  "expoServerPort": null,
  "packagerPort": null,
  "packagerPid": null,
  "expoServerNgrokUrl": null,
  "packagerNgrokUrl": null,
  "ngrokPid": null
}