我试图在markdown
不增加过多开销的情况下捆绑文件(即,不使用第三方依赖关系,不将它们手动添加到Xcode和Android Studio中的资产捆绑包中)。
我的想法是require()
通过调整Metro bundler的设置来包括它们metro.config.js
:
/**
* Metro configuration for React Native
* https://github.com/facebook/react-native
*
* @format
*/
module.exports = {
transformer: {
getTransformOptions: async () => ({
transform: {
experimentalImportSupport: false,
inlineRequires: false,
},
}),
},
resolver: {
assetExts: [`md`] // < include md
}
};
Run Code Online (Sandbox Code Playgroud)
可悲的是,地铁捆绑器将给定默认值的数组替换为此处设置的值。
我不想明确地重复默认资产扩展名列表,该列表列出了大约20多个文件扩展名,尤其是因为我想坚持默认设置。请参阅:https://github.com/facebook/metro/blob/master/packages/metro-config/src/defaults/defaults.js。
追加到数组也不起作用。
使用RN 0.59.3。
我有什么想念的吗?
我想为世博会分发一个包裹。该包是在 expo SDK36 中构建我的应用程序时创建的。
\n\n像许多博览会依赖项一样,我大量使用.ios.js
,.android.js
和.web.js
扩展。
在导入我在 npm 上分发的源时,解析器仅导入,.js
没有任何区别。
作为一个例子,这个包应该与 expo 一起使用:
\n\n这是@expo/webpack-config
已解决的扩展:
[\n ".web.expo.ts",\n ".web.expo.tsx",\n ".web.expo.mjs",\n ".web.expo.js",\n ".web.expo.jsx",\n ".expo.ts",\n ".expo.tsx",\n ".expo.mjs",\n ".expo.js",\n ".expo.jsx",\n ".web.ts",\n ".web.tsx",\n ".web.mjs",\n ".web.js",\n ".web.jsx",\n ".ts",\n ".tsx",\n ".mjs",\n ".js",\n ".jsx",\n ".json",\n ".wasm"\n]\n
Run Code Online (Sandbox Code Playgroud)\n\n但事实并非如此,我必须通过在源代码中添加后缀来手动导入.web
。
如何配置expo
我的分布式包,以便在从 导入源时能够为每个环境导入正确的源node_modules
?
我错误地期望我的扩展能够与main
我的领域一起工作package.json
,我已经使用以下命令重新配置了我的存储库:
/home/dka/workspace/github.com/yeutech-lab/react-cookiebot/src\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 CookieBot.js\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 CookieBot.native.js\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 index.js\n
Run Code Online (Sandbox Code Playgroud)\n\n我正在使用纱线工作区将我的反应本机应用程序转换为单一存储库。将逻辑代码移至共享包后,我可以在调试模式下运行应用程序并创建发布 apk。但是当我在设备上运行发布 apk 时,应用程序会因错误而中止
TypeError: r(d[2]) is not a function. (In 'r(d[2])(this)', 'r(d[2])' is an instance of Object)
它没有给出有关实际错误发生位置的任何其他提示。
看起来有些人已经看到了类似的问题,但我无法从这些帖子中找到任何解决方案。我发现两个类似的错误
https://github.com/mattermost/mattermost-mobile/issues/2757
https://forums.expo.io/t/typeerror-r-is-not-a-function-only-on-device-not-simulator/20985
我想知道如何收集有关此错误的更多信息以修复它。目前,代码似乎被缩小了,因此我无法准确地确定错误发生的位置。
下面是完整的错误:
2020-12-16 09:22:28.909 428-494/? E/AndroidRuntime: FATAL EXCEPTION: mqt_native_modules
Process: com.myapp, PID: 428
com.facebook.react.common.JavascriptException: TypeError: r(d[2]) is not a function. (In 'r(d[2])(this)', 'r(d[2])' is an instance of Object), stack:
<unknown>@521:145
exports@477:81
<unknown>@522:79
h@2:1585
<unknown>@521:139
<unknown>@600:136
<unknown>@551:319
t@546:312
<unknown>@605:70
t@546:312
<unknown>@603:94
t@543:120
<unknown>@541:513
h@2:1585
<unknown>@540:104
h@2:1585
<unknown>@539:185
h@2:1585
<unknown>@538:1122
h@2:1585
<unknown>@528:544
h@2:1585
<unknown>@527:109
h@2:1585
<unknown>@526:898
h@2:1585
<unknown>@466:207
h@2:1585
<unknown>@6:122 …
Run Code Online (Sandbox Code Playgroud) 最近,我的快速刷新停止在我的所有反应本机项目中工作,我什至尝试初始化一个新项目,但它在那里也不起作用
我已经尝试了以下所有尝试:
-. watchman watch-del-all
-. rm -rf /usr/local/var/run/watchman && brew uninstall watchman && brew install watchman
-. clean node_modules and "npm run -- --reset-cache"
Run Code Online (Sandbox Code Playgroud)
无论我在修改源代码后尝试以何种方式重新加载应用程序,更改都不会得到反映。我必须停止并卸载该应用程序,运行npm run -- --reset-cache
然后npm run android
再次运行才能反映更改。
这真是要了我的命,因为我找不到原因。它之前可以工作,但我没有在我的机器上安装任何应用程序。我现在缺少格式化我的机器并从头开始一切,但这是一台 Mac,重新格式化很麻烦。
首先,我认为 firebase 功能已损坏。然后,我尝试制作一个返回 Promise 的简单函数。我将其放入顶级index.js。
const testPromise = param => {
console.log('return promise', param);
return new Promise((resolve, reject) => {
console.log('resolve promise');
resolve('derp');
});
};
testPromise('hede')
.then(d => {
console.log('resolved');
})
.catch(e => {
console.log('e', e);
});
AppRegistry.registerComponent(appName, () => App);
Run Code Online (Sandbox Code Playgroud)
控制台输出:
return promise hede
resolve promise
Run Code Online (Sandbox Code Playgroud)
看,没有“已解决”日志,也没有错误日志。
我尝试使用 nvm 更改 nodejs 版本,但没有成功。我尝试了 v12.5.0、v12.18.2、v15.6.0、v10.16.3。我尝试过像nvm use 12.5 && npm start
我尝试创建一个新的反应本机项目,并复制了所有内容。现在,它按预期工作。这对我来说是一个解决方案,但我没有将问题标记为已解决,因为仍然是一个谜,我无法弄清楚为什么它不适用于现有项目。
我只是想知道我们编写的单元测试文件是否也捆绑在一起在 React Native 中的最终 apk 和 ipa 文件中。如果是这种情况,我们如何排除此类测试文件被捆绑。我们可以在metro文件中进行一些配置来防止测试文件被metro捆绑器捆绑吗?
我已经从 Windows 开发环境切换到 Linux 环境,但在让反应本机应用程序再次运行时遇到问题。该应用程序使用 gradle 构建并完美安装到手机上adb
,当我通过 Metro ( ) 发送应用程序构建时,npx react-native start
我得到以下内容。该包存在...所以我不明白为什么找不到它。我不明白的是为什么from /home/hovaness/Public/ignitefolderscan/_
当它首先不是一个真正的目录时会返回......
错误:错误:无法解析模块/home/hovaness/Public/ignitefolderscan/node_modules/@react-native-community/cli-plugin-metro/node_modules/metro-runtime/src/modules/empty-module.js
:/home/hovaness/Public/ignitefolderscan/_
在/home/hovaness/Public/ignitefolderscan/node_modules/@react-native-community/cli-plugin-metro/node_modules/metro-runtime/src/modules/empty-module.js
项目或这些目录中找不到:
node_modules
System
platform linux
arch x64
cpu 20 cores Intel(R) Core(TM) i9-10900X CPU @ 3.70GHz
directory ignitefolderscan /home/hovaness/Public/ignitefolderscan
JavaScript (and globally-installed packages)
node 16.14.2 /bin/node
npm 8.7.0 /home/hovaness/Public/ignitefolderscan/node_modules/.bin/npm
@react-native-community/cli 7.0.3
corepack 0.10.0
expo 44.0.6
jetifier 2.0.0
n 8.1.0
npm 8.7.0
npx 10.2.2
pnpm 7.0.0-rc.6
react-native-cli 2.0.1
yarn 1.22.18
yarn 1.22.18 …
Run Code Online (Sandbox Code Playgroud) 我是 React Native 的新手。npm start 正在终端上启动 Metro Bundler,但在浏览器上没有启动。通过“w”cmd Metro Bundler左侧的菜单未显示在浏览器上
将 React Native 从 0.69.5 更新到 0.70.3。
应用程序在两个平台上构建,但当它在 Metro 上运行时会出现此错误。
error: Error: resolveDependencies: Found duplicate dependency key 'undefined' in /Users/LA/Repo/sb-app/index.js at resolveDependencies (/Users/LA/Repo/sb-app/node_modules/@react-native-community/cli-plugin-metro/node_modules/metro/src/DeltaBundler/graphOperations.js:484:13)
error: Error: resolveDependencies: Found duplicate dependency key 'undefined' in /Users/LA/Repo/sb-app/index.js
at resolveDependencies (/Users/LA/Repo/sb-app/node_modules/@react-native-community/cli-plugin-metro/node_modules/metro/src/DeltaBundler/graphOperations.js:484:13)
at processModule (/Users/LA/Repo/sb-app/node_modules/@react-native-community/cli-plugin-metro/node_modules/metro/src/DeltaBundler/graphOperations.js:232:31)
at async traverseDependenciesForSingleFile (/Users/LA/Repo/sb-app/node_modules/@react-native-community/cli-plugin-metro/node_modules/metro/src/DeltaBundler/graphOperations.js:221:3)
at async Promise.all (index 0)
at async initialTraverseDependencies (/Users/LA/Repo/sb-app/node_modules/@react-native-community/cli-plugin-metro/node_modules/metro/src/DeltaBundler/graphOperations.js:204:3)
at async DeltaCalculator._getChangedDependencies (/Users/LA/Repo/sb-app/node_modules/@react-native-community/cli-plugin-metro/node_modules/metro/src/DeltaBundler/DeltaCalculator.js:208:25)
at async DeltaCalculator.getDelta (/Users/LA/Repo/sb-app/node_modules/@react-native-community/cli-plugin-metro/node_modules/metro/src/DeltaBundler/DeltaCalculator.js:90:16)
at async DeltaBundler.buildGraph (/Users/LA/Repo/sb-app/node_modules/@react-native-community/cli-plugin-metro/node_modules/metro/src/DeltaBundler.js:56:5)
at async IncrementalBundler.buildGraphForEntries (/Users/LA/Repo/sb-app/node_modules/@react-native-community/cli-plugin-metro/node_modules/metro/src/IncrementalBundler.js:81:19)
at async IncrementalBundler.buildGraph (/Users/LA/Repo/sb-app/node_modules/@react-native-community/cli-plugin-metro/node_modules/metro/src/IncrementalBundler.js:161:19)
Run Code Online (Sandbox Code Playgroud)
遵循错误文件位置只会将我带到“抛出”语句,当然,index.js 或 app.tsx 上没有重复的依赖项,因为我假设错误只是向上抛出到该文件。我认为...
不管怎样,这已经困扰了我和我的团队两天,希望其他人可能也遇到过这个问题并知道如何调试它。关键undefined
是有0%的帮助。
我还没有在 …
metro-bundler ×10
react-native ×10
expo ×2
javascript ×2
npm ×2
reactjs ×2
babeljs ×1
es6-promise ×1
node.js ×1
unit-testing ×1
upgrade ×1
watchman ×1
webpack ×1