报错截图

报错场景

  • Vue项目的public目录下的index.html文件引入某个.js脚本文件(假设为xxx.js)吧
  • 写法:<script src="./local/xxx.js"></script>
  • 直接用相对路径引入,结果报错了

报错原因

  • 报错:Uncaught SyntaxError: Unexpected token '<' (at xxx.js)
  • 原因一般就是资源引用错误,如下:

  • 脚本或者静态资源引用错误,错误后无法加载解析。
  • 或者是<script><link>标签引入
  • 引入的路径错了,找不到这个文件脚本资源之类的

  • 笔者的项目中,配置了打包的基路径:BASE_URL
    比如:
// vue.config.js
module.exports = {
  publicPath: process.env.BASE_URL,
  lintOnSave: true,
  ......
}
// .env.development
NODE_ENV=development
BASE_URL=/

亦或路由:

// router.js
const router = new VueRouter({
  mode: 'history',
  base: process.env.BASE_URL,
  routes
})

所以,入口index.html就要换成基路径变量引入方式

代码示例

<!DOCTYPE html>
<html lang="zh-cmn-Hans">
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width,initial-scale=1.0" />
    <link rel="icon" href="<%= BASE_URL %>favicon.ico" />
    <script src="<%= BASE_URL %>summernote/jquery-2.2.0.min.js"></script>

    <!-- 正确引入方式 -->
    <script src="<%= BASE_URL %>fold/xxx.js"></script>
    
    <!-- 错误引入方式 -->
    <script src="./fold/xxx.js"></script>
    
  </head>
  <body>
    <div id="app"></div>
    <!-- built files will be auto injected -->
  </body>
</html>

水冗水孚
1.1k 声望585 粉丝

每一个不曾起舞的日子,都是对生命的辜负