标签: metro-bundler

如何在Metro.config.js中为Metro Bundler附加扩展名?

我试图在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。

我有什么想念的吗?

javascript react-native metro-bundler

5
推荐指数
1
解决办法
1364
查看次数

展会包裹如何发放?(.web.js、.js 配置)

我想为世博会分发一个包裹。该包是在 expo SDK36 中构建我的应用程序时创建的。

\n\n

像许多博览会依赖项一样,我大量使用.ios.js,.android.js.web.js扩展。

\n\n

在导入我在 npm 上分发的源时,解析器仅导入,.js没有任何区别。

\n\n

作为一个例子,这个包应该与 expo 一起使用:

\n\n

图像

\n\n

这是@expo/webpack-config已解决的扩展:

\n\n
[\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

\n\n

如何配置expo我的分布式包,以便在从 导入源时能够为每个环境导入正确的源node_modules

\n\n

编辑

\n\n

我错误地期望我的扩展能够与main我的领域一起工作package.json,我已经使用以下命令重新配置了我的存储库:

\n\n
/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

问题 : …

javascript webpack react-native expo metro-bundler

5
推荐指数
1
解决办法
1690
查看次数

类型错误:r(d[2]) 不是函数。(在“r(d[2])(this)”中,“r(d[2])”是对象的实例)仅在 Android 上的发布应用程序中

我正在使用纱线工作区将我的反应本机应用程序转换为单一存储库。将逻辑代码移至共享包后,我可以在调试模式下运行应用程序并创建发布 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)

react-native yarn-workspaces metro-bundler

5
推荐指数
0
解决办法
967
查看次数

React-native 快速刷新已损坏

最近,我的快速刷新停止在我的所有反应本机项目中工作,我什至尝试初始化一个新项目,但它在那里也不起作用

我已经尝试了以下所有尝试:

-. 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,重新格式化很麻烦。

watchman react-native metro-bundler

5
推荐指数
2
解决办法
8323
查看次数

Promise 对象在 React Native 项目中不起作用

首先,我认为 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

我尝试创建一个新的反应本机项目,并复制了所有内容。现在,它按预期工作。这对我来说是一个解决方案,但我没有将问题标记为已解决,因为仍然是一个谜,我无法弄清楚为什么它不适用于现有项目。

node.js es6-promise react-native metro-bundler

5
推荐指数
1
解决办法
1582
查看次数

测试文件是否与 React Native 中的代码捆绑在一起?

我只是想知道我们编写的单元测试文件是否也捆绑在一起在 React Native 中的最终 apk 和 ipa 文件中。如果是这种情况,我们如何排除此类测试文件被捆绑。我们可以在metro文件中进行一些配置来防止测试文件被metro捆绑器捆绑吗?

unit-testing react-native metro-bundler

5
推荐指数
1
解决办法
171
查看次数

无法解析empty-module.jsreact-native和metro-cli

我已经从 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

Ignite-cli 医生

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)

npm reactjs react-native metro-bundler

5
推荐指数
1
解决办法
2796
查看次数

浏览器上的 Metro Bundler 不显示

我是 React Native 的新手。npm start 正在终端上启动 Metro Bundler,但在浏览器上没有启动。通过“w”cmd Metro Bundler左侧的菜单未显示在浏览器上

npm react-native metro-bundler

5
推荐指数
1
解决办法
1万
查看次数

使用react-native-reanimated时,您可能需要额外的加载器来处理这些加载器的结果

我有一个使用 Expo 生成的 React Native 应用程序。当我安装时react-native-reanimated,它给了我这个错误。我还需要用它配置其他东西吗?

在此输入图像描述

reactjs babeljs react-native expo metro-bundler

5
推荐指数
2
解决办法
3864
查看次数

如何调试此错误:“错误:错误:resolveDependencies:在 &lt;metro 捆绑程序的本地路径&gt; 中找到重复的依赖项键“未定义”” - RN 0.70

将 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%的帮助。

我还没有在 …

upgrade react-native metro-bundler react-native-community

5
推荐指数
1
解决办法
6766
查看次数