renren-fast-vue在js中引用本地json文件,部署nginx后404错误

提问 5 2539
Chalvan
Chalvan 2018-07-28
版本:renren-fast vue V1.0.0 开发环境:chrome 67.0.3396.99(正式版本) (64 位)
我在使用renren-fast-vue开发前端时,用到城市列表的功能,为了加快访问速度,我直接在js中引用城市代码文件city.json。 js中引用代码如下: [pre] // 获取省份列表 export function getProvinceList () { return request({ url: '../../static/res/city.json', method: 'get', data: requestParam() }) } [/pre] 在本地开发环境通过npm run dev,可以正常访问,但是通过npm run build --prod打包部署到nginx服务器上时,却一直404找不到city.json文件。 查看了一下打包路径,每次都会自动生成一个6位日期的目录,并且将js和资源文件全部放到static目录,打包后文件结构如下: index.html 180728 ----static ------plugins ------res ----------city.json ------js ------css ------fonts ------img 在nginx上面网页是发布到一个子目录subdir中的,访问city.json时路径自动被修改为了:https://www.XXX.com/static/res/city.json,因此提示404找不到文件。 求大神们解答疑惑,十分感谢!
回帖
  • daxiong
    2018-07-28
    亲,由于项目修改了最终打包的路径,所以static目录请只放插件或项目中不直接引入的静态文件。 可以放在assets/data/city.json 或者 src/data/city.json目录下,通过@/assets/data/city.json @/src/data/city.json获取。或者放在业务.vue文件同目录,相对路径获取 ./city.json
    0
  • Chalvan
    Chalvan (楼主)
    2018-07-28
    之前就是因为放在assets下面,没有被打包到dist里面去,所以才修改为static的。 我引用的js是放在src/api目录的common.js中的
    0
  • daxiong
    2018-07-29
    img[//cdn.renren.io/7e7eb201807290955219037.png] 忘记提醒你,这样直接import引入!不再需要ajax获取
    0
  • Chalvan
    Chalvan (楼主)
    2018-07-29
    这个是在vue文件当中直接引用吧。 我现在是把这个方法提取为公共方法放到src/api/modules下的common.js里面了,而在vue中调用getProvinceList的公共方法。 在common.js头部添加了import语句的时候,控制台(npm run dev)提示找不到文件了,提示npm install --save安装,安装之后运行依然404. common.js内容如下: [pre] import cityjson from '@/assets/res/city.json' // 获取省份列表 export function getProvinceList () { return cityjson } [/pre]
    0
  • daxiong
    2018-07-30
    亲,你的思路需要转变一下哦。 之前通过ajax获取本地json。现在先通过import获取到json,为什么还要封装一个方法去return返回? 直接在你调用getProvinceList方法的组件内 import获取到json不就可以了吗?因为你本身需求,只是为了获取这个json数据,这样不还省去了一个公共方法吗?
    1
本帖已结贴