当我第一次开始我的项目时,重新加载而不重新编译就可以了。一路上的某个地方我打破了这一点。
当我从 Xcode 运行该项目时,打包器终端窗口可以正常打开,但它看不到我对 JS 文件所做的更改。我使用 Atom 作为我的编辑器。
就目前而言:React 打包器已准备就绪。
[上午 11:06:24]
我试过卸载守望者。更新和升级自制程序。杀死进程并重新启动。重新启动计算机。似乎没有什么可以让它回到原来的方式。
当我第一次开始我的项目时,重新加载而不重新编译就可以了。一路上的某个地方我打破了这一点。
当我从 Xcode 运行该项目时,打包器终端窗口可以正常打开,但它看不到我对 JS 文件所做的更改。我使用 Atom 作为我的编辑器。
就目前而言:React 打包器已准备就绪。
[上午 11:06:24]
我试过卸载守望者。更新和升级自制程序。杀死进程并重新启动。重新启动计算机。似乎没有什么可以让它回到原来的方式。
@lernerbot 应用程序正在加载吗?我在终端输出中没有看到对该包的网络请求。
StackOverflow 和 Discord #react-native 频道是获得此类问题帮助的最佳方式。
我有同样的问题。当我更改文件时,打包程序突然停止捆绑。这已经工作了几个月,没有出现任何问题。
我发现我的 .git/ 目录有一个 index.lock 文件。当我删除该文件后,自动重新捆绑再次开始工作。
我对此感到疯狂,两者react-native start
似乎react-native bundle
都停留在我的代码的旧版本上,该版本不再存在于任何地方!清理、删除、重新克隆我的存储库没有帮助......
[编辑]重新启动我的计算机似乎可以解决问题......
我也明白了。这似乎是一个守望者错误,因为运行
watchman watch-del-all
然后重新加载即可。我用的是守望者4.3.0
——其他人都用什么版本?
嗯,降级为守望者4.1.0
似乎有助于解决这个问题。
对我来说,它有助于使用选项 --verbose 启动react-native包,从日志中获取缓存目录(对我来说,它的 /var/folders/jf/j39xsb090795rm8l98qjdff80000gn/T/ )并执行 rm react-packager * 在那里。之后,它再次使用最新版本的文件。
我和守望者遇到了同样的问题3.9.0
鉴于这个问题似乎与许多不同的情况和问题有关,而且守望者已经取得了进展,我们将结束这个问题,转而采用更多可重现的示例。
如果您遇到此问题,请尝试删除上面提到的打包程序缓存,或watchman watch-del-all
在提交另一个问题之前删除该命令。谢谢!
我在 Windows 上的 Packager 也遇到同样的问题。执行初始任务时速度太慢(可能需要等待 5-10 分钟才能准备好请求)。
对文件进行一些修改后,.js
ut 不会重新加载应用程序,甚至不会热重新加载。
启用实时重新加载/热重新加载也不起作用。
将节点更新到 6.2.0 和 npm v 3.8.9 但所有 deps 都是通过 Node 4.4.5 安装的
更新节点后,但仍然未检测到文件更改,打包程序会根据每个请求提供旧的应用程序包。
谢谢!
是的。和Harry008有同样的问题。
在windows下也有同样的问题。打包程序正在提供旧文件,我不知道缓存在哪里......
@anraiki 它也解决了我的问题。谢谢哟。
@anraiki @yooneskh 如何替换看守人?同样的问题。
"react": "15.2.1",
"react-native": "0.30.0",
操作系统:windows7
我下载新的 watchman,将其添加到 PATH 中
(当前路径是 E:\temp2\RouterTest)
[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
我这里也有同样的问题。谁能帮我吗?看来我的包装商没有捆绑它。每次我进行更改并执行 Cmd+R 时,它都会闪烁屏幕,但不会加载任何更改。
Xcode 7.3 守望者 4.6 反应本机 0.30
同上@k0mikus,在除 RN 0.31 之外的相同版本上,react-native start
似乎也没有在启动时进行任何捆绑。
@thomasvm 删除 .git/index.lock 也对我有用。
在 Windows 7 上,我将 Node 和 npm 更新到最新版本,这解决了我的问题。
就我而言,发生这种情况是因为我不小心删除了守望者。奇怪的是没有错误信息。一旦我重新安装了守望者并重新运行,npm start
就会出现大量排队的重新加载。我不得不再次终止服务器,运行watchman watch-del-all
,然后重新运行npm start
,一切都很好。这也解决了我遇到的一个问题,即find dependencies
打包程序的初始步骤非常慢。
我遇到了同样的问题,使用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
评论提供线索
我运行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并重新安装它。现在打包器似乎工作正常,但当我进行更改时不要重建。
对于仍然遇到此问题的人,我找到了另一个原因:
实时重新加载不起作用:检查根目录下是否有.lock
文件,如果有,watchman
将忽略目录中的更改,Live Reload 将失败。如果您运行react-native init MyProject
并yarn
安装了,您的项目文件夹的根目录中可能会有一个yarn.lock
文件,如上所述。
watchman
[我的问题] 可能存在无法实际观察文件更改的问题。即使看起来watchman
正在运行,但实际上可能并未运行。即使使用watchman watch-list
来验证您的项目是否正在被监视,也不能保证它正在工作。
您需要先关闭 React Native 应用程序,然后才能继续下一步。如果您通过以下方式运行该应用程序,npm start
则只需停止该进程即可。如果您正在运行模拟器,则需要关闭所有这些。
接下来您需要删除watchman
用户目录。
rm -fr /usr/local/var/run/watchman/$USER-state
现在您应该能够按照您想要的方式重新启动应用程序,并且实时重新加载应该可以很好地进行。我的实时重新加载问题只能通过使用此方法来解决。
@neiker 只是专门给您一个说明,因为您似乎也遇到了与我相同的问题,我的最后一条评论是对我有用的解决方案。如果它也能解决您的问题,我会很好奇。
基本上,watchman
在启动时处于某种状态,一定是幕后出了问题,并且处于watchman
不稳定状态。在未运行时删除用户的特定状态文件夹watchman
可以使其在下次启动时重置。
watchman
当然,这似乎更像是 的问题,但由于它是由 实例化的,react-native
因此无法透明地查看何时失败,因此可能有一个解决方案来监视这个特定问题。watchman
react-native
react-native
非常感谢@manifestinteractive!
我被这个问题困扰了两天并rm -fr /usr/local/var/run/watchman/$USER-state
已修复。
@MarlBurroW我认为从技术上讲,$USER-state
目录中最终有一个PID
来自试图运行但由于某种原因失败的守望者实例的挥之不去的文件。那里似乎还有一个任务文件,用于记录要观看的内容。因此,它看起来好像以某种方式watchman
排队react-native
并watchman
报告它正在正确运行,但react-native
由于目录中存在一些损坏,要求监视的特定目录实际上甚至无法被监视$USER-state
。100% 清除它是我能 100% 确定一切会正确重置的唯一方法。它可能不需要完全清除,如果有人知道实际导致问题被删除的特定文件,那就太好了。
我不确定是否有可能以react-native
某种方式检查此故障。由于它是透明发生的(因为react-native
实际上是排队的watchman
),因此似乎需要进行一些 QA 检查,以确保watchman
实际收到的命令可能是按顺序排列的(如果尚未按顺序排列)。
@manifestinteractive 抱歉,我没用,我上周换了电脑,从头开始。
我一整天都在搞这个,而且我成功了。所以,如果它对任何人有帮助,我所做的就是npm uninstall yarn
。yarn
有一个.lock
文件,但只是删除它不起作用。之后我就跑了npm start
,一切正常。
.lock
(我想,为了将来的参考,首先在可能存在的位置搜索文件并将其删除)
下面的链接给出了这个问题的解决方案
@theSupermacy 由于某种原因,您的链接已损坏,在此处重新发布:
@manifestinteractive 抱歉修正了我的错误:)
不幸的是,所提出的解决方案都不适合我。我的项目中的热重载似乎在一夜之间停止工作。(我看到小指示器写着“热重新加载”,但视图没有更新到我的更改,我每次都必须硬重新加载)。
XCode 8.2.1 反应本机 0.40 守望者 4.7.0
编辑:它确实有效,只是由于某种原因不重新加载我的一些嵌套组件。
嗨,大家好。在我卸载yarn
并删除yarn.lock文件和.git/index.lock文件后,仍然对我不起作用。
react-native-cli: 2.0.1
react-native: 0.42.0
以@manifestinteractive 所说的为基础。我所做的就是解决这个问题
辅助 | grep watchman Kill -9 "watchman pid"
这是一个充满野性的呼唤。谢谢!
我使用打字稿,它对帖子没有任何帮助。然后我更改了文件 tsconfig.json,现在它工作正常。:+1:
tsconfig.json:
{
"compilerOptions": {
"module": "commonjs",
"target": "es6",
"jsx": "react",
"allowJs": true,
"sourceMap": true
}
}
做一个
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 "{}" \;
现在正在工作(我不确定此操作是否解决了问题)。
我的解决方案 - 从项目根目录的 app.json 文件中删除项目
"packagerOpts": { "nonPersistent": "--nonPersistent" }
@thomasvm你是对的。删除 .git 目录中的 index.lock 文件后,我可以通过重新加载来看到更新。多谢
我遇到了类似的问题,RN 0.52 中对 index.js 的更新没有在实际手机上更新。终于发现rm -rf node_modules && npm install
成功了。
_# ###解决方案
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
如果一切都失败,请检查您的代码并查看是否导入了尚未安装的模块。有时 RN 会默默地失败并显示最后的工作代码。
有人知道为什么 watchman 仅仅被 .lock 文件关闭吗?
检查您是否在模拟器中启用了热重载。默认情况下可能未启用它。按Ctrl+M
并选择Enable Hot Reloading
听起来很傻。但是,它对我不起作用,因为我在带有发布配置的 XCode 上运行它。将其更改为“调试”有效。
这种情况仍在发生。为什么...
.git 目录中的 index.lock 杀死了看守人......
如果您使用的是 Expo,请尝试在 packager-info.json 中配置此设置
{
"expoServerPort": null,
"packagerPort": null,
"packagerPid": null,
"expoServerNgrokUrl": null,
"packagerNgrokUrl": null,
"ngrokPid": null
}