uniapp项目如何引入外部js

我正在参加「掘金·启航计划」

前言

最近做了一个uniapp项目,因为要实现h5页面的一个功能,需要用到外部的一些js资源。因此要在该uniapp项目实现引入外部js资源,期间遇到了好些坑,今天来总结记录下具体的实现以及一些问题。

具体实现

在 index.html 文件中引入

根据查找网上的一些方法,直接在项目的index.html文件中使用script标签引入要用的资源,可是打开页面发现并没有加载上这些资源,因此排除了该种方式。

动态创建script标签

因为只需要在一个特定的页面加载这些js资源,在该页面的事件中定义动态创建script标签、并加入页面中的方法,再使用该方法写入js文件的URL链接或者文件路径。

addScript(url) {
    let head = document.getElementsByTagName('head')[0];
    let script = document.createElement('script');
    script.type = 'text/javascript';
    script.src = url;
    head.appendChild(script);
},
onloadJs() {
    this.addScript("/static/js/crypto-js.min.js")
    return Promise.resolve()
},

在页面的onLoad() 函数调用加载js的方法

onLoad() {
    Promise.resolve()
        .then(() => this.onloadVoice())
        .then(() => this.onloadJs())
        .then(() => {
                setTimeout(() => {
                        this.initRecord()
                }, 1000)
        })
},

注:该项目中使用引入js文件里面的函数API,必须要等这些js资源加载完成之后才能使用,不然会报错(什么方法未定义之类的),并且加载js的方法都是同步操作,因此使用 Promise.resolve()(回调函数) 方法来实现让其它方法都执行了,再执行另一个方法的操作

遇到的问题

报错:Uncaught SyntaxError: Unexpected token '<' (at transcode.worker.js:1:1)

这个错误通常意味着 JavaScript 加载失败,可能是因为尝试加载的脚本返回了 HTML 页面或者其他非 JavaScript 内容。

造成这种情况的原因(例如 JavaScript 脚本文件路径错误、跨域问题等)

一般检查 JavaScript 文件路径是否正确,确保文件存在于指定的位置。

页面中没有使用该transcode.worker.js文件,在浏览器中点击报错,就跳到index.html文件,感觉毫无头绪,在网上找解决方法(好多说是引入js的路径错误),也没有定位到问题所在,没办法实在没有思路后来就先放弃了,隔了一天又去仔细查看引入的js文件,发现其中一个js文件引入了其它的js文件,而该文件没有在项目中引入。

原文链接:https://juejin.cn/post/7246330395272249403 作者:sherlockkid7

(0)
上一篇 2023年6月20日 上午10:57
下一篇 2023年6月20日 上午11:08

相关推荐

发表回复

登录后才能评论