本机模块在 nativescript 中无法正常工作
Posted
技术标签:
【中文标题】本机模块在 nativescript 中无法正常工作【英文标题】:native modules are not working correctly in nativescript 【发布时间】:2018-09-18 01:01:51 【问题描述】:我正在尝试使用这个 android 包在 nativescript 中制作模糊效果。
https://github.com/wasabeef/Blurry
所以在 nativescript 中包含了 /app/App_Resources/Android/app.gradle 中我的 app.gradle 中的编译
然后重建一切工作良好并且构建得很好。
但是当我开始使用该库时,我尝试使用 console.dir(global['jp']) 因为库导入语句应该是
import jp.wasabeef.blurry.Blurry;
所以我开始查看要调用的函数是否存在,所以这是来自 console.dir 的内容
JS: === dump(): dumping members ===
JS:
JS: "wasabeef":
JS: "blurry":
JS: "R": "R()function () [native code] "
JS:
JS:
JS:
JS: === dump(): dumping function and properties names ===
JS: === dump(): finished ===
so ,正如您所看到的,应该让我访问该库的最后一个函数不存在。 我真的很想知道为什么我还尝试自己制作一个 android 包来使用它会返回我想要的功能但同样的问题最后一个功能没有出现。
我也在nativescript中搜索了一个插件我找到了这个https://www.npmjs.com/package/nativescript-blur
但是,它实际上并没有像文档中所说的那样产生实际的模糊,当我尝试使用它时,发生了同样的问题,我得到了这个错误。
JS: ERROR Error: Uncaught (in promise): TypeError: Cannot read property 'init' of undefined
JS: TypeError: Cannot read property 'init' of undefined
JS: at new Blur (file:///data/data/org.nativescript.test2/files/app/tns_modules/nativescript-blur/blur.js:8:39)
JS: at Object.<anonymous> (file:///data/data/org.nativescript.test2/files/app/home/home.component.js:5:12)
JS: at require (<anonymous>:1:266)
JS: at Object.<anonymous> (file:///data/data/org.nativescript.test2/files/app/home/home-routing.module.js:5:24)
JS: at require (<anonymous>:1:266)
JS: at Object.<anonymous> (file:///data/data/org.nativescript.test2/files/app/home/home.module.js:5:29)
JS: at require (<anonymous>:1:266)
JS: at file:///data/data/org.nativescript.test2/files/app/tns_modules/tns-core-modules/globals/globals.js:92:32
JS: at new ZoneAwarePromise (file:///data/data/org.nativescript.test2/files/app/tns_modules/nativescript-angular/zone-js/dist/zone-nativescript.js:777:29)
JS: at Object.import (file:///data/data/org.nativescript.test2/files/app/tns_modules/tns-core-modules/globals/globals.js:90:16)
JS: at SystemJsNgModuleLoader.loadAndCompile (file:///data/data/org.nativescript.test2/files/app/tns_modules/@angular/core/bundles/core.umd.js:6596:29)
JS: at SystemJsNgModuleLoader.load (file:///data/data/org.nativescript.test2/files/app/tns_modules/@angular/core/bundles/core.umd.js:6580:60)
JS: at RouterConfigLoader.loadModuleFactory (file:///data/data/org.nativescript.test2/files/app/tns_modules/@angular/router/bundles/router.umd.js:4611:72)
JS: at RouterConfigLoader.load (file:///data/data/org.nativescript.test2/files/app/tns_modules/@angular/router/bundles/router.umd.js:4591:52)
JS: at MergeMapSubscriber.project (file:///data/data/org.nativescript.test2/files/app/tns_modules/@angular/router/bundles/router.umd.js:2083:74)
所以,当我检查 node_modules 中错误的位置时,我发现 init 是包名称中的最后一个函数,该库与我在上面尝试使用的包使用相同的大小写。
另外,我已经在 angular 空白模板和 javascript 空白模板中尝试过此操作,假设在全局包含库时存在任何差异。
我的 nativescript cli 版本是:3.4.3
我使用的是 android 版本 6 的模拟器我不知道为什么会发生这个奇怪的问题,这对 nativescript 来说是新的。请有人告诉我如何解决这个问题,或者至少只是用一个使用我上面提到的包的示例应用程序来回答。
谢谢
【问题讨论】:
【参考方案1】:我发现答案是奇怪的是,当 nativescript 由于某种原因重建时它没有正确构建它。 所以,作为这个问题https://github.com/davecoffin/nativescript-blur/issues/5 解决办法说
你只需要:
做
tns platform remove android
然后做
tns run android
这就是它现在应该可以正常工作了。希望对遇到此类错误的人有所帮助
【讨论】:
谢谢你,互联网陌生人。它确实有帮助。以上是关于本机模块在 nativescript 中无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章
如何在不使用本机代码的情况下要求用户在 NativeScript 上启用蓝牙