每当我使用命令启动Expo Goexpo start时,都会出现此错误:
Error: Cannot find module 'metro-core'
Require stack:
- /usr/local/lib/node_modules/expo/node_modules/@expo/cli/build/src/start/server/metro/instantiateMetro.js
- /usr/local/lib/node_modules/expo/node_modules/@expo/cli/build/src/start/server/metro/MetroBundlerDevServer.js
- /usr/local/lib/node_modules/expo/node_modules/@expo/cli/build/src/start/server/DevServerManager.js
- /usr/local/lib/node_modules/expo/node_modules/@expo/cli/build/src/start/startAsync.js
- /usr/local/lib/node_modules/expo/node_modules/@expo/cli/build/src/start/index.js
- /usr/local/lib/node_modules/expo/node_modules/@expo/cli/build/bin/cli
Run Code Online (Sandbox Code Playgroud)
我尝试重新安装metro-core,但没有效果。
我正在尝试对 Expo React Native 应用程序进行 docker 化,以便我的团队合作伙伴中的任何人都可以下载该存储库,然后轻松地docker-compose up在他们的计算机中运行相同的 expo 服务器。
到目前为止,我可以构建容器,并且它显示的信息与我在计算机上本地运行它时显示的信息相同。
尝试启动 Metro 捆绑程序时出现问题,网址http://localhost:19002无法访问。端口 19001 不会发生这种情况,该端口工作正常。此外,我尝试用我的 iPhone 设备扫描二维码,但它也不起作用,因为我猜是找不到 docker ip。
我不知道我做错了什么,并且网络上没有太多关于 dockerize expo 的信息。
这些是我的 dockerfile 和 docker-compose.yml
FROM node:latest
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY package*.json /usr/src/app/
COPY app.json /usr/src/app/
RUN npm install -g expo-cli
EXPOSE 19000
EXPOSE 19001
EXPOSE 19002
CMD npm i -f && npm start
Run Code Online (Sandbox Code Playgroud)
version: '3.7' # Specify docker-compose version
# Define the services/containers to be run
services:
expo: # …Run Code Online (Sandbox Code Playgroud) 不确定是否有人遇到过这个问题,因为我无法在任何地方查找它,但我看不到 React Native 应用程序的任何日志,因为浏览器控制台告诉我“另一个调试器已经连接”,这是一个不断循环的警告。
Metro bundler 告诉我,我必须在浏览器中查看 javascript 日志。我无法在不调试的情况下处理我的应用程序,任何人都可以帮忙吗?
我使用react-native init创建了一个新项目。我正在将react-native与以下内容一起使用:“react”:“16.13.1”,“react-native”:“0.63.2”。
当我尝试使用react-native run-android命令运行应用程序时,它在终端中显示构建成功,但我的 Metro 捆绑程序中没有出现任何内容(我正在附加它的图像),并且我的模拟器显示“无法加载脚本”问题。
无法加载脚本
如果我按“R”在节点(捆绑程序)中重新加载应用程序,它会说没有连接到它的设备,但我的模拟器正在运行。我在个人设备上也遇到了同样的问题。 Metro 捆绑程序未运行
我还尝试创建资产文件夹android/app/src/main/assets并运行以下命令:
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。
只有当应用程序显示在模拟器上时,并且当我在App.js文件中进行更改并保存它时,模拟器中才不会发生任何更改。
如果我重新加载,则会弹出错误“无法连接到开发服务器”。 无法连接到开发服务器 甚至尝试了adb反向并将“dev”选项更改为本地主机和端口8081,但它没有用。(如果有任何特定路径我应该尝试上述步骤,请提及)。
我到底做错了什么?
任何人都可以帮忙吗?
PS:我使用的是Windows 10机器。
谢谢。
今天我更新到了 React Native 版本 0.65.1。之后我无法启动 Metro 服务器
我现在在构建 Release .apk 时收到以下错误消息:
node_modules/metro/src/Server.js:350
processRequest = (req, res, next) => {
^
SyntaxError: Unexpected token =
at new Script (vm.js:80:7)
at createScript (vm.js:274:10)
at Object.runInThisContext (vm.js:326:10)
at Module._compile (internal/modules/cjs/loader.js:664:28)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:712:10)
at Module.load (internal/modules/cjs/loader.js:600:32)
at tryModuleLoad (internal/modules/cjs/loader.js:539:12)
at Function.Module._load (internal/modules/cjs/loader.js:531:3)
at Module.require (internal/modules/cjs/loader.js:637:17)
at require (internal/modules/cjs/helpers.js:22:18)
info Run CLI with --verbose flag for more details.
> Task :app:bundleReleaseJsAndAssets FAILED
Run Code Online (Sandbox Code Playgroud)
我试过了:
这是 Metro 服务器节点模块的片段
processRequest = (req, …Run Code Online (Sandbox Code Playgroud) 当我的 React Native 应用程序出现错误时,打印到控制台的堆栈跟踪指向而不是index.bundle原始源代码(请参见下面的示例)。有没有办法将 React Native 配置为使用源映射,以便日志正确显示?
仅当从异步回调或渲染之外的某些内容引发错误时,才会出现此问题。如果我在组件内抛出错误,则该错误会在控制台中显示正确的堆栈跟踪。有趣的是,错误始终在 LogBox 中显示正确的堆栈跟踪。
我正在react-native run-android通过 Metro 运行它并查看日志。为了澄清,我试图让它适用于本地调试版本,而不是生产/发布版本。理想情况下,日志会在控制台中显示正确的堆栈,这样我就不必手动符号化它们或在 LogBox 中查找错误。
console.error 的结果示例:
Error: Connection closed
at anonymous (http://localhost:8081/index.bundle?platform=android&dev=true&minify=false&app=com.myapp.local&modulesOnly=false&runModule=true:261835:40)
at forEach (native)
at flushVolatile (http://localhost:8081/index.bundle?platform=android&dev=true&minify=false&app=com.myapp.local&modulesOnly=false&runModule=true:261833:33)
at anonymous (http://localhost:8081/index.bundle?platform=android&dev=true&minify=false&app=com.myapp.local&modulesOnly=false&runModule=true:262065:20)
at apply (native)
Run Code Online (Sandbox Code Playgroud)
先感谢您!
不确定这是否可能,但这里是:
stage.foo.com/graphqlreact-native run-android
Run Code Online (Sandbox Code Playgroud)
localhost:8081foo拥有出色的基础设施和安全性,他们设置了 CORS 来阻止来自localhost.local.foo.com然而,他们还为这种情况
设置了一个公共环回域。local.foo.com重定向回localhostlocal.foo.com/graphql,它指向我想要的端点local.foo.com:8081/debugger-ui(远程调试 URL)时,它正确连接到在那里运行的 Metro Bundler 服务。所以在这一切之后,这是我的问题:
locahost:8081local.foo.com:8081?注意:这不是应用程序代码的问题,我需要某种方法来更改应用程序在查找 Metro Bundler 服务时所点击的源。
我按照以下链接开始使用react-native
我试图创建没有expo的本机应用程序,所以按照文档,我遵循以下命令
npm install -g react-native-cli
react-native init AwesomeProject
Run Code Online (Sandbox Code Playgroud)
运行android命令后
react-native run-android
Run Code Online (Sandbox Code Playgroud)
它给我以下模拟器错误
所以我用启动命令来运行Metro服务器
react-native start
Run Code Online (Sandbox Code Playgroud)
这个命令给了我控制台另一个错误
reactjs react-native react-native-android react-native-cli metro-bundler
我有一个带有 TypeScript 的全新 React Native 0.61.1 项目。它曾经完美地显示了新项目的欢迎屏幕。我添加了一个类,试图导入它(它甚至自动完成),但它说找不到该组件。
这是我的tsconfig.json(所有代码都在我的src文件夹中,该文件夹位于我的项目根目录中):
{
"compilerOptions": {
// Target latest version of ECMAScript.
"target": "esnext",
// Search under node_modules for non-relative imports.
"moduleResolution": "node",
// Process & infer types from .js files.
"allowJs": true,
// Don't emit; allow Babel to transform files.
"noEmit": true,
// Enable strictest settings like strictNullChecks & noImplicitAny.
"strict": true,
// Disallow features that require cross-file information for emit.
"isolatedModules": true,
// Import non-ES modules as default imports. …Run Code Online (Sandbox Code Playgroud) javascript node-modules typescript react-native metro-bundler
I\xe2\x80\x99m 在带有纱线工作区的 monorepo 上,并且 I\xe2\x80\x99m 也使用react-native-svg-transformer。\n我已将 sdk 更新到 sdk 40,并且在 Metro 中出现此错误。配置.js :\n
这是我的 Metro.config.js :
\nconst { createMetroConfiguration } = require(\'expo-yarn-workspaces\');\nconst { getDefaultConfig } = require(\'@expo/metro-config\');\nconst configuration = createMetroConfiguration(__dirname);\nmodule.exports = (async () => {\n const {\n resolver: { sourceExts },\n } = await getDefaultConfig();\n return {\n transformer: {\n babelTransformerPath: require.resolve(\'react-native-svg-transformer\'),\n },\n resolver: {\n ...configuration.resolver,\n assetExts: configuration.resolver.assetExts.filter(ext => ext !== \'svg\'),\n sourceExts: [...sourceExts, \'svg\'],\n // NOTE: using native entrypoint because bug in metro https://github.com/facebook/metro/issues/485\n resolverMainFields: [\'native\', \'module\', \'browser\', …Run Code Online (Sandbox Code Playgroud) metro-bundler ×10
react-native ×10
expo ×3
javascript ×3
reactjs ×2
typescript ×2
adb ×1
android ×1
docker ×1
node-modules ×1
node.js ×1
npm ×1
source-maps ×1