2

我正在尝试使用这个 android 包在 nativescript 中制作模糊效果。

https://github.com/wasabeef/Blurry

所以在 nativescript 中,我的 app.gradle 在 /app/App_Resources/Android/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 ===

所以,正如您所看到的,应该让我访问库的最后一个函数不存在。我真的很想知道为什么我还尝试自己制作一个 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 来说是新的。请我需要有人告诉我如何解决这个问题,或者至少只是用一个使用我上面提到的包的示例应用程序来回答。

谢谢

4

1 回答 1

2

我发现答案是奇怪的是,当 nativescript 由于某种原因重建时它没有正确构建它。所以,正如这个问题https://github.com/davecoffin/nativescript-blur/issues/5 解决方案所说

你只需要:

tns platform remove android

然后做

tns run android

这就是它现在应该可以正常工作了。希望对遇到此类错误的人有所帮助

于 2018-04-10T19:37:31.820 回答