我在
webViewInterface
中使用nativescript 8 with webpack v5
插件我正在尝试启动本地下载的文件ex。视频、音频、HTML 文件
我能够下载这些文件,但是在 webview 的帮助下运行该文件时,我得到了
file not found
chromium: [INFO:CONSOLE(1)] "Uncaught TypeError: Cannot read property '_onNativeEvent' of undefined", source: chrome-error://chromewebdata/
在 NativeScript 中,默认情况下,波浪号 (~) 标记应用程序根文件夹(注意应用程序而不是项目!)。因此,如果我的文件位于
<project-name>/app/index.html
,那么我需要设置这样的路径~/index.html
.
这在
natviescript v6
上运行良好,但在升级到 nativescript v8
后它坏了。
有人可以帮忙吗???
app 文件夹在 iOS 上是只读的(至少,在真实设备上,不一定在模拟器上)。您需要将文件下载到临时文件夹或文档文件夹,然后从那里访问。
作为参考,请参阅我自己在这个问题上的挣扎。
好的,我遇到了同样的问题。在我的例子中,当我从 nativescript 7 迁移到 8 时,webpack.config.ts 被清理了。 里面有一些有用的东西复制了我所有的 webview 文件。
我在我的 webpack.config.js 中添加了一些代码,现在它似乎可以工作了 “src”是包含我的 webview 文件夹的文件夹。
const webpack = require("@nativescript/webpack");
module.exports = (env) => {
webpack.init(env);
webpack.Utils.addCopyRule({
from: 'webviews/**',
context : 'src'
})
return webpack.resolveConfig();
};
我使用的文档。
NS 8:https://docs.nativescript.org/webpack.html#adding-a-copy-rule
尝试使用路径:'webview_folder_in_root_of_project/index.html'
并在初始化 webview 时为 android 添加安全访问
const page = args.object;
const webView = page.getViewById('webviewId');
//to get access to local files
if (isAndroid) {
webView.android.getSettings().setAllowFileAccess(true)
}
const webViewInterface = new webViewInterfaceModule.WebViewInterface(webView, 'webview_folder_in_root_of_project/index.html');