【发布时间】:2018-08-30 02:03:26
【问题描述】:
这是我出现问题时的源代码树:
https://github.com/lucaszanella/jscam/tree/cf29b3cc90df7c5c7bb2d27c2205264d52b0715d/src/jscam
我相信npm install、npm start 和npm run android 会启动它(注意,onvif 不是从 npm 安装的,而是在 npm post-install 脚本中克隆然后安装,但它会安装在 @ 987654340@ 带有指向它克隆位置的符号链接。我什至尝试将所有内容放在node_modules 中以防万一,但错误仍然存在)。也不要介意我在文件夹中的额外 docker 东西
不管怎样,问题是:
我正在尝试在 React Native 中使用 nodejs 模块 onvif,所以我使用 this technique 来使用 babel 翻译 require 方法并安装 browserfy 模块来实现核心 nodejs 模块。我已经用crypto 之类的简单示例进行了测试,并且成功了。但是,当我尝试简单地导入 onvif 模块时,我得到了这个:
Here's device.js line 30,看起来Cam 在这里未定义
当我导入导入 cam.js 的 onvif.js 时,没有任何反应。但随后它导入了device.js,在再次导入cam.js 时似乎变得未定义
我还尝试了this method,这似乎避免了所有 babel 翻译,但令人惊讶的是问题仍然存在。
更新:
这是新的源代码树:https://github.com/lucaszanella/jscam/tree/98b714219ed25b9d91ea3af275177f66fdb74fa2/src/jscam
我现在正在使用 extraNodeModules,这是官方的做法。你可以在这里看到我的依赖:https://github.com/lucaszanella/jscam/blob/98b714219ed25b9d91ea3af275177f66fdb74fa2/src/jscam/rn-cli.config.js
就在这条线上:https://github.com/isaacs/sax-js/blob/d65e3bb5049893aaab4aba05198b9cd335b5a1ad/lib/sax.js#L222
虽然它看起来仍然是相同类型的错误
更新:如果找不到 dgram,请尝试
npm install lucaszanella/react-native-dgram-shim
它已经在 package.json 中,应该安装但有人抱怨它没有
【问题讨论】:
-
连续第三次赏金?
-
我使用的是 mac,但东西不只是构建?我在 onvif 中找不到模块 dgram
-
所以你当前的问题是因为
stream。这可以通过更改为stream: require.resolve('stream-browserify')来解决。但是这样做你会回到你的Camundefined 错误。这是因为您使用的包onvif具有循环依赖关系。凸轮 -> 设备 -> 凸轮。 Node 可以处理循环依赖,但你需要修复它才能让它在这里工作 -
请参阅此主题以获取帮助github.com/browserify/browserify/issues/961
-
@LucasZanella,在答案中添加了相关信息。很高兴你的问题终于解决了
标签: javascript node.js react-native npm