【问题标题】:Google Cloud Logging Node.js library import in React Native在 React Native 中导入 Google Cloud Logging Node.js 库
【发布时间】:2021-11-27 06:03:07
【问题描述】:

我在我的 React Native 项目中导入 @google-cloud/logging npm 包时遇到困难。 我尝试使用npm install @google-cloud/loggingyarn add @google-cloud/logging,但是当我尝试通过const {Logging} = require('@google-cloud/logging');import {Logging} from '@google-cloud/logging'; 命令在我的代码中使用它时,我得到了一个找不到流的异常。

例外:

error: Error: Unable to resolve module stream from 
C:\Users\User\Documents\repos\project\node_modules\@google-cloud\logging\build\src\index.js: 
stream could not be found within the project.

If you are sure the module exists, try these steps:
 1. Clear watchman watches: watchman watch-del-all
 2. Delete node_modules and run yarn install
 3. Reset Metro's cache: yarn start --reset-cache
 4. Remove the cache: rm -rf /tmp/metro-*
  26 | // eslint-disable-next-line @typescript-eslint/no-var-requires
  27 | const pumpify = require('pumpify');
> 28 | const streamEvents = require("stream-events");
     |                               ^
  29 | const middleware = require("./middleware");
  30 | exports.middleware = middleware;
  31 | const metadata_1 = require("./utils/metadata");

at ModuleResolver.resolveDependency (C:\Users\User\Documents\repos\project\node_modules\metro\src\node-haste\DependencyGraph\ModuleResolution.js:191:15)
    at DependencyGraph.resolveDependency (C:\Users\User\Documents\repos\project\node_modules\metro\src\node-haste\DependencyGraph.js:353:43)
    at Object.resolve (C:\Users\User\Documents\repos\project\node_modules\metro\src\lib\transformHelpers.js:271:42)
    at resolve (C:\Users\User\Documents\repos\project\node_modules\metro\src\DeltaBundler\traverseDependencies.js:571:33)
    at C:\Users\User\Documents\repos\project\node_modules\metro\src\DeltaBundler\traverseDependencies.js:587:26
    at Array.reduce (<anonymous>)
    at resolveDependencies (C:\Users\User\Documents\repos\project\node_modules\metro\src\DeltaBundler\traverseDependencies.js:586:33)
    at C:\Users\User\Documents\repos\project\node_modules\metro\src\DeltaBundler\traverseDependencies.js:275:33
    at Generator.next (<anonymous>)
    at asyncGeneratorStep (C:\Users\User\Documents\repos\project\node_modules\metro\src\DeltaBundler\traverseDependencies.js:87:24)

我尝试从项目中删除node_modules 文件夹并再次安装包,重置Metro cache。错误仍然存​​在。

我的package.json 中有"react-native": "~0.63.4""@google-cloud/logging": "^9.6.1"

有没有办法在React Native 项目中实现Google Cloud Logging

更新 1

我用yarn add stream 命令解决了stream 异常。 现在它要求我使用yarn 添加的fs 包,但现在我收到以下错误:

Error: While trying to resolve module `fs` from file `C:\Users\User\Documents\repos\project\node_modules\@google-cloud\logging\build\src\utils\metadata.js`, the package `C:\Users\User\Documents\repos\project\node_modules\fs\package.json` was successfully found. However, this package itself specifies a `main` module field that could not be resolved (`C:\Users\User\Documents\repos\project\node_modules\fs\index.js`. Indeed, none of these files exist:

  * C:\Users\User\Documents\repos\project\node_modules\fs\index.js(.native|.android.ts|.native.ts|.ts|.android.tsx|.native.tsx|.tsx|.android.js|.native.js|.js|.android.jsx|.native.jsx|.jsx|.android.json|.native.json|.json)
  * C:\Users\User\Documents\repos\project\node_modules\fs\index.js\index(.native|.android.ts|.native.ts|.ts|.android.tsx|.native.tsx|.tsx|.android.js|.native.js|.js|.android.jsx|.native.jsx|.jsx|.android.json|.native.json|.json)
    at DependencyGraph.resolveDependency (C:\Users\User\Documents\repos\project\node_modules\metro\src\node-haste\DependencyGraph.js:376:17)
    at Object.resolve (C:\Users\User\Documents\repos\project\node_modules\metro\src\lib\transformHelpers.js:271:42)
ndencies.js:571:33)
    at C:\Users\User\Documents\repos\project\node_modules\metro\src\DeltaBundler\traverseDependencies.js:587:26
    at Array.reduce (<anonymous>)
    at resolveDependencies (C:\Users\User\Documents\repos\project\node_modules\metro\src\DeltaBundler\traverseDependencies.js:586:33)
    at C:\Users\User\Documents\repos\project\node_modules\metro\src\DeltaBundler\traverseDependencies.js:275:33
    at Generator.next (<anonymous>)
    at asyncGeneratorStep (C:\Users\User\Documents\repos\project\node_modules\metro\src\DeltaBundler\traverseDependencies.js:87:24)
    at _next (C:\Users\User\Documents\repos\project\node_modules\metro\src\DeltaBundler\traverseDependencies.js:107:9)

【问题讨论】:

  • 您是否在metro.config.js 中包含了this thread 中提到的其他扩展?
  • @FaridShumbar 是的,问题仍然存在。现在我得到一个新的异常,“fs”库无法解析。与上面的类似,我的“流”错误。
  • 我想可以通过安装react-native-fs并将需求从fs更新为react-native-fs来解决

标签: node.js react-native google-cloud-logging


【解决方案1】:

总结一下,@Asp1re 找到了解决初始Error: Unable to resolve module stream 的解决方案,它正在运行yarn add stream 命令。

之后又出现了一个错误:

Error: While trying to resolve module `fs` from file `C:\Users\User\Documents\repos\project\node_modules\@google-cloud\logging\build\src\utils\metadata.js`, the package `C:\Users\User\Documents\repos\project\node_modules\fs\package.json` was successfully found. However, this package itself specifies a `main` module field that could not be resolved (`C:\Users\User\Documents\repos\project\node_modules\fs\index.js`. Indeed, none of these files exist

这应该通过在metro.config.js 中添加其他扩展来解决:

module.exports = {
  transformer: {
    getTransformOptions: async () => ({
      transform: {
        experimentalImportSupport: false,
        inlineRequires: false,
      },
    }),
  },
  resolver: {
    sourceExts: ['jsx', 'js', 'ts', 'tsx'], //add here
  },
};

并安装react-native-fs。确保将要求从 fs 更新为 react-native-fs

【讨论】:

  • 您能否分享一下我如何将要求从fs 更新为react-native-fs?我安装了react-native-fs
  • 它应该在你的package.json
  • @WytrzymałyWiktor 你好,不。我暂时实现了 Firebase Crashlytics,并且可以毫无问题地使用 React Native。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-07
相关资源
最近更新 更多