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 .