A.js、B.js文件都放在static目录下。引入方式下
在PC调试,控制台会报错说B.js文件Unexpected token '<',如
看报错,以为B.js中'<'有不对的地方,后来发现B.js文件没有用到'<'。
网上有说法说这种情况只能在A.js和B.js不在同一个目录下可以。试着在static目录创建一个子目录eruda把B.js放进去后再引入,一样不行,一样报错。
后来在父目录public创建一个eruda目录在把B.js引入,PC控制台上没有报错信息,如
后来项目上线,h5项目是嵌到客户的app里面,客户的app做了404文件的处理,导致在app打开我们的项目,出现报错,但是报错页面也是偶然出现,有点难复现。
由于h5项目也要有微信小程序版本,任务紧,部分的功能使用web-view嵌入h5页面。用小程序打开h5项目时,vconsole-webpack-plugin插件的控制台总是打印没有找到B.js文件。
用app去打开h5页面则控制台没有报错。重新将B.js文件放到static目录下,PC调试,控制台还是报Unexpected token '<'的错误。搜了一下说static里面文件引用要用绝对路径。如
发布到测试,再用小程序打开H5页面,发现还是报错,如
将引入方式改成最开始的引入方式,发布后再用小程序打开h5页面,发现报错如下
根据报错信息,发现路径少了static目录,应该是https://***.com:**/fo****p/static/eruda-1.2.2.min.js。将引入方式改为下图。
发布后,再用微信小程序打开的h5页面发现没有报错了,用PC调试的控制台也没有报错。这路径是我没有细想。是我想当然,相对路径是当前相对引入文件的路径。
A.js是项目首页html通过下图方式引入。
而A.js通过下图方式引入B.js文件。
所以script中src的相对路径理应相对的是引入A.js文件的html文件,而不是相对A.js文件,只有A.js被html引入后才有window.document,而且window.document是html内的。
对于public建一个eruda目录还是报没有找到,是因为public下的eruda目录的内容并不会在“npm run build”自动加到打完的包里,需要每次打完包后将eruda复制到打完包里或者配置webpack将eruda目录加到包里,而本地调试没有经过打包时可以正确找到B.js文件。我忘记复制eruda目录,webpack也没有配置。不知道为什么发布的项目,在app内通过vconsole-webpack-plugin插件没有看到错误打印信息,而用小程序去打开h5页面vconsole-webpack-plugin插件控制台就会报错。