renren-fast-vue在js中引用本地json文件,部署nginx后404错误
| 版本: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找不到文件。
求大神们解答疑惑,十分感谢!
-
2018-07-28
亲,由于项目修改了最终打包的路径,所以static目录请只放插件或项目中不直接引入的静态文件。
可以放在assets/data/city.json 或者 src/data/city.json目录下,通过@/assets/data/city.json @/src/data/city.json获取。或者放在业务.vue文件同目录,相对路径获取 ./city.json
-
2018-07-28
之前就是因为放在assets下面,没有被打包到dist里面去,所以才修改为static的。
我引用的js是放在src/api目录的common.js中的
-
2018-07-29
img[//cdn.renren.io/7e7eb201807290955219037.png]
忘记提醒你,这样直接import引入!不再需要ajax获取
-
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]
-
2018-07-30
亲,你的思路需要转变一下哦。
之前通过ajax获取本地json。现在先通过import获取到json,为什么还要封装一个方法去return返回?
直接在你调用getProvinceList方法的组件内 import获取到json不就可以了吗?因为你本身需求,只是为了获取这个json数据,这样不还省去了一个公共方法吗?