在开发模式下 React Native App 卡在 Jetify 上
React Native App Stuck On Jetify in dev mode
我正在尝试在 0.60 上迁移我的应用程序,但它一直卡在 jetify 进程上。
基本上,在这一行之后:
info Running jetifier to migrate libraries to AndroidX. You can disable it using "--no-jetifier" flag.
它只是卡住了,什么也没做。我需要用于 react-native-firebase 和其他一些本地库的 jetifier。有什么建议吗?
更新
看来问题出在符号链接上。我正在使用 Lerna。
最后我所做的是重写一个 jetify 指定我需要 jetify 的模块。
我的 jetify index.js:
const {fork} = require('child_process');
const {join} = require('path');
const {getClassesMapping, readDir, chunk} = require('./src/utils');
const cpus = require('os').cpus().length;
const arg = process.argv.slice(2)[0];
const mode = arg && (arg === 'reverse' || arg === '-r') ? 'reverse' : 'forward';
const SEARCH_DIRS = [
........modules here
];
const classesMapping = getClassesMapping();
for (const SEARCH_DIR of SEARCH_DIRS) {
const files = readDir(SEARCH_DIR);
console.log(
`Jetifier found ${
files.length
} file(s) to ${mode}-jetify. Using ${cpus} workers...`,
);
for (const filesChunk of chunk(files, cpus)) {
const worker = fork(join(__dirname, 'src', 'worker.js'));
worker.send({filesChunk, classesMapping, mode});
}
}
和 postinstall
在 package.json 中:
"postinstall": "cp ./jetify.js ./node_modules/jetifier/index.js"
还有一种情况是npx react-native run-android
卡在jetifying状态
如果你 运行 npm run android
它也会启动 metro 服务器,
但是,要重新运行 npm run android
,您需要关闭地铁命令window并允许npm run android
启动新的 Metro 服务器
我正在尝试在 0.60 上迁移我的应用程序,但它一直卡在 jetify 进程上。
基本上,在这一行之后:
info Running jetifier to migrate libraries to AndroidX. You can disable it using "--no-jetifier" flag.
它只是卡住了,什么也没做。我需要用于 react-native-firebase 和其他一些本地库的 jetifier。有什么建议吗?
更新
看来问题出在符号链接上。我正在使用 Lerna。
最后我所做的是重写一个 jetify 指定我需要 jetify 的模块。
我的 jetify index.js:
const {fork} = require('child_process');
const {join} = require('path');
const {getClassesMapping, readDir, chunk} = require('./src/utils');
const cpus = require('os').cpus().length;
const arg = process.argv.slice(2)[0];
const mode = arg && (arg === 'reverse' || arg === '-r') ? 'reverse' : 'forward';
const SEARCH_DIRS = [
........modules here
];
const classesMapping = getClassesMapping();
for (const SEARCH_DIR of SEARCH_DIRS) {
const files = readDir(SEARCH_DIR);
console.log(
`Jetifier found ${
files.length
} file(s) to ${mode}-jetify. Using ${cpus} workers...`,
);
for (const filesChunk of chunk(files, cpus)) {
const worker = fork(join(__dirname, 'src', 'worker.js'));
worker.send({filesChunk, classesMapping, mode});
}
}
和 postinstall
在 package.json 中:
"postinstall": "cp ./jetify.js ./node_modules/jetifier/index.js"
还有一种情况是npx react-native run-android
卡在jetifying状态
如果你 运行 npm run android
它也会启动 metro 服务器,
但是,要重新运行 npm run android
,您需要关闭地铁命令window并允许npm run android
启动新的 Metro 服务器