Taro框架中引入阿里云
最近做的一个项目当中云存储使用的是阿里云,在上传资源后还需要拿着获取到的不可访问资源地址去进行解密才能获取到能临时访问的资源地址。
在使用阿里云之前我们需要引入ali-oss这个包,然后我就直接通过npm i ali-oss
在Taro项目中引入了这个包,在运行时发现直接报错了。如下图:
cannot find module 'fs‘,fs好像是node里面的内置模块,于是我就去npm上看了一下ali-oss的使用方法,发现使用npm引入后这个包只能在node中使用,然后就试着使用了cdn引入的方式在Taro项目的index.html
文件中通过script标签引入ali-oss的cdn。这时运行项目时还是会报这个错误(心态崩了呀),换了其他版本后还是不行(可能版本不对)。最后又找到这个文件的sdk放到项目当中,试了几个版本后终于成功运行了~~
下面时在项目中进行资源地址替换的方法:
import OSS from '@/utils/sdk/aliyun-oss-sdk.min.js';
import * as cache from './toolbox/cache';
import * as appConfig from './appConfig.js';
import {
getApp } from '@tarojs/taro';
export default {
//该方法用来从后台获取连接阿里云所需要的信息,获取到信息后通过ali-oss包中的OSS方法创建连接通道,创建成功后返回的ossClient对象可用于资源解密,然后我们将该方法存储到小程序的全局当中,并将token信息存储到缓存,并设置过期时间,因为从后台获取到的连接信息是有时间限制的,然后再每个页面的componentDidMount生命周期里面判断缓存中的token是否存在以及全局中是否有ossClient对象,若没有则表明过期需要重新获取连接信息,这时需要再次调用该方法。
getOssAccess : async (props, callback) => {
await props.dispatch({
type: 'oss/queryTempToken',
extra