【问题标题】:Install local package as dependency with react-native使用 react-native 安装本地包作为依赖项
【发布时间】:2018-09-18 17:23:52
【问题描述】:

我正在尝试使用来自相对路径的包,我已经完成了 npm install ../../ExamplePackage 和 react-native install ../../ExamplePackage。这些包在多个级别上是相对的,而不仅仅是一个级别。

我收到以下错误

error: bundling failed: Error: Unable to resolve module `ExamplePackage` from `/Users/vikasagr/workspace/test/ReactNative/MyPackage/src/index.js`: Module `ExamplePackage` does not exist in the Haste module map

This might be related to https://github.com/facebook/react-native/issues/4968
To resolve try the following:
  1. Clear watchman watches: `watchman watch-del-all`.
  2. Delete the `node_modules` folder: `rm -rf node_modules && npm install`.
  3. Reset Metro Bundler cache: `rm -rf /tmp/metro-bundler-cache-*` or `npm start -- --reset-cache`.  4. Remove haste cache: `rm -rf /tmp/haste-map-react-native-packager-*`.
    at ModuleResolver.resolveDependency (/Users/vikasagr/workspace/test/ReactNative/MyPackage/node_modules/metro/src/node-haste/DependencyGraph/ModuleResolution.js:161:1460)
    at ResolutionRequest.resolveDependency (/Users/vikasagr/workspace/test/ReactNative/MyPackage/node_modules/metro/src/node-haste/DependencyGraph/ResolutionRequest.js:91:16)
    at DependencyGraph.resolveDependency (/Users/vikasagr/workspace/test/ReactNative/MyPackage/node_modules/metro/src/node-haste/DependencyGraph.js:272:4579)
    at dependencies.map.relativePath (/Users/vikasagr/workspace/test/ReactNative/MyPackage/node_modules/metro/src/DeltaBundler/traverseDependencies.js:376:19)
    at Array.map (<anonymous>)
    at resolveDependencies (/Users/vikasagr/workspace/test/ReactNative/MyPackage/node_modules/metro/src/DeltaBundler/traverseDependencies.js:374:16)
    at /Users/vikasagr/workspace/test/ReactNative/MyPackage/node_modules/metro/src/DeltaBundler/traverseDependencies.js:212:33
    at Generator.next (<anonymous>)
    at step (/Users/vikasagr/workspace/test/ReactNative/MyPackage/node_modules/metro/src/DeltaBundler/traverseDependencies.js:297:313)
    at /Users/vikasagr/workspace/test/ReactNative/MyPackage/node_modules/metro/src/DeltaBundler/traverseDependencies.js:297:473

我尝试了所有步骤,但没有任何效果。我也尝试过 haul 但这对我也不起作用。

【问题讨论】:

  • ExamplePackage 是真正的 npm 包吗?它有自己的 package.json 吗?
  • 是的。它有一个 package.json 但它不在 NPM 上
  • 在您执行npm install ../../ExamplePackage 之后,您会看到它已添加到项目的 package.json 中?
  • 是的,我确实在 package.json 中看到过

标签: reactjs react-native react-native-web


【解决方案1】:

您可以尝试 WML。 https://www.npmjs.com/package/wml

它的作用:

用实际有效的东西替换 npm 链接!

它对我有用!

干杯

【讨论】:

  • 对我来说,当我更改观看文件的内容时,它会记录标准输出,但查看目的地,它仍在使用旧文件。
【解决方案2】:

符号链接可能导致您的问题。带有本地路径的npm install 在node_modules 中安装库,并带有指向包的本地路径的符号链接。不幸的是,这会导致 react 本机 Metro 捆绑器出现问题(“Haste 模块映射中不存在”)。

npm install 也有同样的问题。 react-native install 对我有用,并且不会创建符号链接。

使用wml 是另一种好方法。它通过自动复制本地库与其在 node_modules 中安装的副本之间的更改来复制符号链接的行为。

有关类似问题,请参阅 https://github.com/facebook/react-native/issues/23327。

【讨论】:

  • 符号链接不是复制更改,它实际上是指向磁盘位置的链接
猜你喜欢
  • 2019-04-29
  • 2018-02-02
  • 1970-01-01
  • 1970-01-01
  • 2017-04-08
  • 2014-08-11
  • 2013-03-11
  • 2012-02-01
  • 2016-06-08
相关资源
最近更新 更多