uni-app中配置devServer实现跨域访问数据

1.在devServer中:

在manifest.json->源码视图中添加

注意:以下代码可以跨域,但是请求出来的数据不是想要的,会出现请求得到的不是数据,而是得到https://api.ithome.com网址的报错网页代码

“h5”: {  
        “devServer”: {  
            “port”: 8000,  
            “disableHostCheck”: true,  
            “proxy”: {  
                “/api”: {  
                    “target”: “https://api.ithome.com”,  
                    “changeOrigin”: true,  
                    “ws”: true,  
                    “secure”: false,
                }  
            }  
        }  
    },

用以下代码可以正确的请求到数据:

“h5”: {
        “devServer”: {  
            “port”: 8000,  
            “disableHostCheck”: true,  
            “proxy”: {  
                “/api”: {  
                    “target”: “https://api.ithome.com”,  //请求的目标域名
                    “changeOrigin”: true,   
                    “secure”: false,
                    “pathRewrite”: {  
                        “^/api”: “/”  
                    } 
 
                }  
            }  
        }  
    }

2.在.vue页面中添加

                var ajaxData={
                    url: “/api“+”/api/reply”,//接口地址即要跨域访问的目标地址
                    method: “get”,//请求的方法
                    data:{postid:236076,replyidlessthan:3241294},//请求所带的参数,即地址中?后部分
                    dataType:’json’,//数据类型
                    header:{
                      ’content-type’:’application/x-www-form-urlencoded’
                    },
                    success:function(res){
                            console.log(res.data)//成功后调用的函数
                        }
                  }
                  ajaxData = ajaxData;
                  uni.request(ajaxData)

完整的请求地址如下:

https://blog.csdn.net/qq_35500778/article/details/100161813

uni-app 配置不同的编译环境(本地、测试、生产)

最近开发项目发现uni-app不能像vue.config.js那样配置环境。自动识别的室友两种环境。
·在HBuilderX 中,点击“运行”编译出来的代码是开发环境,点击“发行”编译出来的代码是生产环境
·cli模式下,是通行的编译环境处理方式。
根据官网提供demo,如下:

if(process.env.NODE_ENV === 'development'){
    console.log('开发环境')
}else{
    console.log('生产环境')
}

如果没有其他情况,在mian.js或者创建一个config.js然后导入main.js 这样的配置就ok啦

如果将代码打包到测试环境时会默认为pro环境。想要它访问测试环境的配置,此时就需要配置下拉 。 直接上的代码
创建config.js文件

let configURL = {}
const NODE_ENV = 'prod'; // dev:开发环境 | test:测试环境  prod:生产环境 
const DEV_URL = 'https://dev.dcloud.net.cn'; // 开发环境
const TEST_URL = 'https://dev.dcloud.net.cn'; // 开发环境
const PROD_URL = 'https://dev.dcloud.net.cn'; // 开发环境
const H5_URL = '/api'; // 开发环境
// if(process.env.NODE_ENV === 'development'){
//     console.log('开发环境')
// }else{
//     console.log('生产环境')
// }
if (NODE_ENV === 'dev') {
	console.log('开发环境')
	configURL = {
		BaseURL: DEV_URL
	}
} else if(NODE_ENV === 'test'){
	console.log('测试环境')
	configURL = {
		BaseURL: TEST_URL
	}
}else {
	console.log('生产环境')
	configURL = {
		BaseURL: PROD_URL
	}
}
// APP-PLUS	App
// APP-PLUS-NVUE或APP-NVUE	App nvue
// H5	H5
// MP-WEIXIN	微信小程序
// MP-ALIPAY	支付宝小程序
// MP-BAIDU	百度小程序
// MP-TOUTIAO	字节跳动小程序
// MP-QQ	QQ小程序
// MP-360	360小程序
// MP	微信小程序/支付宝小程序/百度小程序/字节跳动小程序/QQ小程序/360小程序
// QUICKAPP-WEBVIEW	快应用通用(包含联盟、华为)
// QUICKAPP-WEBVIEW-UNION	快应用联盟
// QUICKAPP-WEBVIEW-HUAWEI	快应用华为
// #ifdef H5
	configURL = {
		BaseURL: H5_URL
	}
// #endif

export default configURL

index.vue

<script>
	import configURL from '@/config.js';
	export default {
		data() {
			return {
				news:[],
				item:{}
			}
		},
		onLoad() {
			console.log(configURL.BaseURL);
			uni.request({
				url: configURL.BaseURL + '/api/news',
				method: 'GET',
				data: {},
				success: res => {
					console.log(res);
					this.news = res.data;
				},
				fail: () => {},
				complete: () => {}
			});
		},
		methods: {
		},
	}
</script>

windows系统下如何安装多版本node

https://blog.csdn.net/jingsi1991/article/details/71514106/

对于nodejs的爱好者来说,必然希望能够在同一台机器上安装多个版本的nodejs(至少两个:稳定版和最新版)。稳定版用来在实际生产项目中使用,最新版本用来研究nodejs的新特性、踩坑。下面我将介绍一下在windows系统中如何通过nvm进行node多版本管理

一、nvm-windows的地址

nvm-windows的github地址:
https://github.com/coreybutler/nvm-windows
安装包下载地址:
https://github.com/coreybutler/nvm-windows/releases


二、安装及使用

这里写图片描述

1、安装包:v1.1.0 setup版

2、安装环境:

Win10系统,64位

3、安装:

安装nvm-windows的时候会指定安装目录和当前所使用的nodejs的目录,这两个路径中不要带有特殊的字符以及空格,否则会在nvm use xxx的时候出错,无法正确解析指定的nodejs的版本的地址

在安装的时候,自动会把nvm和nodejs的目录添加到系统环境变量中,所以安装后可以直接测试安装是否成功。

这里写图片描述
这里写图片描述
这里写图片描述

4、nvm命令:

命令后面有英文注释很简单的,就不用我来翻译了吧。
这里写图片描述

5、使用nvm命令安装nodejs

以上是我通过nvm命令安装指定版本的node的示例,小伙伴们可以多安装几个版本,然后通过实践验证下步骤四中的各个命令哦。

通过以上步骤安装的nodejs和单独安装nodejs没有太大的区别,所以小伙伴们可以和单独安装的nodejs一样放心的使用npm进行cordova、ionic、vue等等的安装哦。

解决 couldn’t find DSO to load: libhermes.so 问题

转自 https://stackoverflow.com/questions/59604146/react-native-compile-bundle-with-android-studio

  apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' android {    compileSdkVersion 28    buildToolsVersion "28.0.3"    defaultConfig {        applicationId ""        minSdkVersion 21        targetSdkVersion 28        versionCode 1        versionName "1.0"        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"    }    buildTypes {        release {            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'        }    }} project.ext.react = [         enableHermes: false,] def jscFlavor = 'org.webkit:android-jsc:+'def enableHermes = project.ext.react.get("enableHermes", false); dependencies {    implementation fileTree(dir: 'libs', include: ['*.jar'])    implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"    implementation 'com.android.support:appcompat-v7:28.0.0'    implementation 'com.android.support.constraint:constraint-layout:1.1.3'    testImplementation 'junit:junit:4.12'    androidTestImplementation 'com.android.support.test:runner:1.0.2'    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'    implementation "com.facebook.react:react-native:+"    implementation 'com.android.support:support-annotations:27.1.1'     if (enableHermes) {        implementation project(':hermes-engine')        debugImplementation files(hermesPath + "hermes-debug.aar")        releaseImplementation files(hermesPath + "hermes-release.aar")    } else {        implementation jscFlavor    }}

The second: You need to change the principal’s gradle

// Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript {    ext.kotlin_version = '1.3.50'    repositories {        google()        jcenter()        mavenLocal()     }    dependencies {        classpath 'com.android.tools.build:gradle:3.4.2'        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"        // NOTE: Do not place your application dependencies here; they belong        // in the individual module build.gradle files    }} allprojects {    repositories {        google()        jcenter()        mavenLocal()        maven {            // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm            url "$rootDir/../node_modules/react-native/android"        }        maven {            // Android JSC is installed from npm            url("$rootDir/../node_modules/jsc-android/dist")        }    }} task clean(type: Delete) {    delete rootProject.buildDir}

The third: You need to add the next at setting gradle

include ':app'rootProject.name='Notes'  include ':hermes-engine'project(':hermes-engine').projectDir = new File(rootProject.projectDir, '../node_modules/hermes-engine/android/')

【RN小记】解决 couldnot find DSO to load: libhermes.so

使用RN版本号: 0.62.2 ,将项目打包release 的 apk 时 ,安装后打开App闪退,完整错误如下:

2020-06-04 17:28:25.648 1375-1391/? E/SoLoader: couldn't find DSO to load: libhermes.so

    --------- beginning of crash
2020-06-04 17:28:25.649 1375-1391/? E/AndroidRuntime: FATAL EXCEPTION: create_react_context
    Process: com.microrelay, PID: 1375
    java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libhermes.so
        at com.facebook.soloader.SoLoader.doLoadLibraryBySoName(SoLoader.java:789)
        at com.facebook.soloader.SoLoader.loadLibraryBySoName(SoLoader.java:639)
        at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:577)
        at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:525)
        at com.facebook.hermes.reactexecutor.HermesExecutor.<clinit>(HermesExecutor.java:20)
        at com.facebook.hermes.reactexecutor.HermesExecutorFactory.create(HermesExecutorFactory.java:29)
        at com.facebook.react.ReactInstanceManager$5.run(ReactInstanceManager.java:997)
        at java.lang.Thread.run(Thread.java:764)
【RN小记】解决 couldnot find DSO to load: libhermes.so

一番搜索找到解决方案:( 原 issues 地址:https://github.com/facebook/react-native/issues/25923 )

在 android/app/build.gradle 文件中 添加如下配置:

configurations.all {
    resolutionStrategy {
        force "com.facebook.soloader:soloader:0.8.2"
    }
}
【RN小记】解决 couldnot find DSO to load: libhermes.so

 如果以上设置完毕后,仍旧一样的错误,那么请先在android项目下,进行clean操作:

./gradlew clean

Android ADB Server启动失败

启动Android Stdio的时候报如下错误:

12345Unable to create Debug Bridge: Unable to start adb server: error: could not install *smartsocket* listener: cannot bind to 127.0.0.1:5037: 閫氬父姣忎釜濂楁帴瀛楀湴鍧�(鍗忚/缃戠粶鍦板潃/绔彛)鍙厑璁镐娇鐢ㄤ竴娆°�� (10048)could not read ok from ADB Server* failed to start daemon *error: cannot connect to daemon'D:\adt-bundle-windows-x86_64-20140624\sdk\platform-tools\adb.exe,start-server' failed -- run manually if necessary

  然后模拟器列表为空了,找不到先前建立的模拟器了。然后百度查询了下方法,记录下。

     原因是5037端口被占用了。

     解决方法:就是找到谁占用了一个端口,然后把该程序关掉。

     1、打开cmd窗口,进入adb.exe所在的文件夹目录

      如 cd D:\adt-bundle-windows-x86_64-20140624\sdk\platform-tools

     2、netstat -aon|findstr “5037”

      TCP 127.0.0.1:5037 0.0.0.0:0 LISTENING 5456

      发现5456占用了 5037端口,继续查看5456的task,发现是360MobileLink.exe.如下所示

      tasklist|findstr “5456”

      360MobileLink.exe 5456 Console 1 23,240 K

      接下来问题就好解决了,在任务管理器kill掉360MobileLink.exe ,运行android程序,ok .

使用Poedit翻译&汉化WordPress主题和插件

WordPress有非常多的主题和插件,但是很多都是老外开发的,没有默认包含中文语言包,导致很多朋友无法直接使用。一直来,倡萌都在分享一些不错的WordPress插件,然后尽可能进行汉化翻译,但是一个人的精力毕竟有限。

所以,今天分享下使用Poedit翻译/汉化WordPress主题和插件的教程,希望可以帮助到一些朋友。

PoEdit 是一款.po文件编辑器,PO即Portable Object,可跨平台对象的意思,PoEdit常用来汉化各种程序,它内置于wxWidgets工具中,可以在所有它支持的平台上运行,如Unix下的GTK+以及Windows。PoEdit提供更方便的办法编辑目录,而不用通过启动VI文本编辑器,手动编辑。百度百科

估计谁看了百科的介绍都有点云里雾里,下面就直接进入正题吧。

下载安装Poedit

下载并安装Poedit:https://poedit.net/(建议务必到官方下载,如果实在没办法官方下载,请自己百度下载吧)安装过程就不想讲述了。

编辑和保存翻译

1、安装好以后,运行poedit,然后就可以看到如下界面,通常我们直接点击“翻译WordPress主题或插件”:

2、然后会弹出一个窗口,将需要翻译的插件文件夹拖放到上面,然后按照下图选择语言,继续:

3、稍等一下,Poedit就为检索到了需要翻译的字段,非常智能化。

根据倡萌的经验,我们需要修改一下“编目属性”里的“复数形式”,如下图,选择“使用自定义复数表达式”,然后填入 ‪nplurals=2; plural=(n > 1);,这样就可以确保单复数字段可以正常识别和翻译

在“编目属性”的“源关键字”选项卡,我们可以看到Poedit已经自动添加了关键字,也就是只要在WordPress主题或插件中,包含了这些关键字的字段,都可以检索和翻译。一般而言,我们不需要去修改这里的设置,除非你很清楚源关键字到底是什么。

4、接下来,我们就可以逐条进行翻译,上面是英文,下面就是输入中文的地方。

注意:翻译一定要非常注意高亮字段,比如下图的源文本中包含了高亮显示的 %s,我们需要原样复制到翻译中,必须确保可以正常高亮显示,否则可能会导致这条翻译无法正常生效。

Poedit 的右侧栏已经包含了自动翻译建议,免费版一般采用的是微软翻译,如果你要更好的翻译质量,那可以购买他们的最高级的授权,是按年收费的。

5、翻译以后,我们第一次保存,会 弹出如下窗口,一般文件名默认即可,文件名后面的部分,简体中文为 zh_CN,繁体中文为 zh_TW

保存以后,一般会同时生成一个.mo格式的文件,这个文件就是显示翻译必须的,而 .po 格式的文件是Poedit软件可编辑的格式,也就是说,我们只需要去编辑.po格式的文件,保存时会自动更新.mo文件。

上传翻译到对应目录

一般而言,你保存翻译文件的时候,Poedit会智能地识别目录,然后将文件保存在插件的指定语言目录中,这样一般就可以生效了。比如上图的 search-meter/languages 目录就是Search Meter 插件的语言目录。

但是,通常我们都需要在后台更新主题和插件,这样会导致,每次更新都会删除掉语言包,为了解决这个问题,WordPress还提供了一个很好的解决办法。

  • 插件:将插件的.mo和.po文件上传到 /wp-content/languages/plugins 目录即可
  • 主题:主题默认保存的语言包,是不包含主题名称的,你会看到 zh_CN.mo 和 zh_CN.po,所以我们要修改下名字为 主题名+zh_CN(比如2020主题的语言包名字为 twentytwenty-zh_CN),然后将语言文件上传到/wp-content/languages/themes 目录即可

注:严格来说,上面说的主题名其实应该是主题注册翻译的时候设置的textdomain,通常规范的主题设置都会将textdomain设置为主题文件夹的名称。

如果你要了解更多,可以看下:《让WordPress主题支持语言本地化

如何对新版本进行翻译

WordPress主题和插件会不断升级更新,如果我们要对新版本的主题或插件更新翻译,如何做呢?

其实很简单,只需要将之前的语言包文件复制到主题或插件自身的语言目录,然后编辑 .po 文件,点击界面的“从代码更新”即可获取到新的字段,翻译后,保存即可。

设置Poedit首选项

如果你觉得每次翻译新的项目,都需要填写一些信息太麻烦了,你可以在首选项设置一些默认的设置,比如翻译者的名称和电子邮件等:

一些翻译建议

翻译最重要的就是质量。如果翻译不准确,可能会给使用者造成困扰,甚至会导致使用者误操作。所以,翻译是一项细活,翻译完了以后,还要去后台插件的界面去仔细看下,哪些句子或词语翻译不够准确,进行必要的修正。

并不是所有的主题和插件都非常规范,有时候,你会发现无法使用Poedit获取翻译字段,或者获取到的字段不完整。如果遇到这些问题,建议联系主题或插件的作者反馈,希望他们进行完善和修复。

如果你发现翻译的语言包在主题或插件的语言目录中不生效,那就尝试复制语言包到 /wp-content/languages/plugins(插件)或/wp-content/languages/themes (主题),或许就可以了。

如果你翻译汉化了主题或插件,学会分享出来,让更多人的人受益。只要人人都奉献一点爱,世界将变成美好的人间!

拓展阅读:

宝塔面板如何升级PHP版本

如果我们的wordpress网站是用宝塔面板一键部署的,那么在升级php版本的时候,我们可以直接在宝塔面板后台直接安装升级就可以了。

具体操作步骤如下:

在这里插入图片描述

首先打开“软件商店”,在“运行环境”下找到需要升级的php版本

然后到“网站管理”找到对应的网站,点击“设置”,切换到对应PHP版本即可。

在这里插入图片描述

集成mongoDB遇到的问题

一:admin用户登录鉴权失败

当mongoDB设置了账号密码时,且设置的db为admin(角色为root),此时登录且操作都是OK的,连接可视化工具进行各种操作也是ok的,但是springboot项目里面却是一直超时

原因:设置的账号密码是admin数据库的,然后连接的是自己的其他数据库(cloud_demo),使得一直超时

解决方案:

1)创建有(cloud_demo)数据库的权限的用户,不适用admin

2)比较简单,直接在springboot项目的mongoDB的uri后面拼接就行了 (在mongodb4中未测试通过)

mongodb://name:password@localhost:27017/cloud_demo?authSource=admin


二:密码鉴权失败

当密码有: @两个符号的时候,需要使用%3A替代:,使用%40替换@符号

Redis设置密码

设置密码有两种方式。

1. 命令行设置密码。

运行cmd切换到redis根目录,先启动服务端

>redis-server.exe

另开一个cmd切换到redis根目录,启动客户端

>redis-cli.exe -h 127.0.0.1 -p 6379

客户端使用config get requirepass命令查看密码

>config get requirepass
1)"requirepass"
2)""    //默认空

客户端使用config set requirepass yourpassword命令设置密码

>config set requirepass 123456
>OK

一旦设置密码,必须先验证通过密码,否则所有操作不可用

>config get requirepass
(error)NOAUTH Authentication required

使用auth password验证密码

>auth 123456
>OK
>config get requirepass
1)"requirepass"
2)"123456"

也可以退出重新登录

redis-cli.exe -h 127.0.0.1 -p 6379 -a 123456

命令行设置的密码在服务重启后失效,所以一般不使用这种方式。

2. 配置文件设置密码

在redis根目录下找到redis.conf配置文件,搜索requirepass,找到注释密码行,添加密码如下:

# requirepass foobared
requirepass tenny     //注意,行前不能有空格


指定conf配置文件 重启服务后,客户端重新登录后查看

>redis-cli -h 127.0.0.1 -p 6379 -a 123456
>config get requirepass
1)"requirepass"
2)"123456"

linux 下搜索字段

方法如下:

1、命令模式下输入“/字符串”,例如“/Section 3”。

2、如果查找下一个,按“n”即可。

要自当前光标位置向上搜索,请使用以下命令:

/pattern Enter

其中,pattern表示要搜索的特定字符序列。

要自当前光标位置向下搜索,请使用以下命令