初次搭建v3+ts项目时,搭建elementPlus使用自动导入报错,一时没定位到问题所在,以为node版本太低导致运行报错

1、 问题: 升级了最新的稳定版nodev18.14.2,结果运行时报错,如下:

digital envelope routines::unsupported

原因及方案:

查询了一下资料发现:node.js V17版本中最近发布的OpenSSL3.0, 而OpenSSL3.0对允许算法和密钥大小增加了严格的限制,可能会对生态系统造成一些影响.

解决方案1:

windows系统中:set NODE_OPTIONS=--openssl-legacy-provider

linux系统中:export NODE_OPTIONS=--openssl-legacy-provider

解决方案2:

降低node.js版本到17以下(不包含17)

2、问题:上述操作后,将elementPlus的自动导入先注释是可以正常运行的,但是我觉得18的版本不太好,所以换了16的版本(v16.18.1),之后再次运行时发现我连node -v版本都不能正常使用了,结果如下:

node: --openssl-legacy-provider is not allowed in NODE_OPTIONS

解决方案:(mac)

在终端,我运行 export 来检查我的环境变量,看到 NODE_OPTIONS=--openssl-legacy-provider 已经被设置。此时我通过运行 unset NODE_OPTIONS发现可以重新使用 node。

3、问题:但此时我的自动导入还是不能用,还是报错~~

原因:elementPlus版本与自动导入要求安装的unplugin-auto-import、unplugin-vue-components版本不适配

解决方案:将plus的版本指定  1.0.2-beta.28

"unplugin-auto-import": "^0.15.0"
"unplugin-vue-components": "^0.24.0"
"element-plus": "^1.0.2-beta.28"
引言使用 nvm 升级 node 版本 ,从 v12.5.0 升级到 v16.15.1,升级完成后,使用 npm 命令时总是出现警告: npm WARN config global '--global', '--local' are deprecated. Use '--location=global' instead 。 一、 报错 原因升级 node 版本 后,npm 没有同步升级到对应 版本 ,所以出现 WARN 。二、解决办法将 npm 升级到最新 版本 。在 wi
Happy[happybabel]: Version: 4.0.0. Threads: 2 (shared pool) fs.js:169 throw new ERR_INVALID_CALLBACK(cb); TypeError [ERR_INVALID_CALLBACK]: Callback must be a function. Received 29 at maybeCallback (fs.js:169:9) at Object.write (fs.js:694:14
我们在本地开发的时候需要对process.env上面挂载一些变量,这样我们可以在webpack里面获取到这里变量,然后做一些个性化到操作。 export NODE _ENV=production 采用这个命令,这样我们打印 console.log(process.env. NODE _ENV) 符合我们预期。 删除环境变量 unset NODE _ENV 卸载当前 项目 版本 : npm uninstall -g @angular/cli 清除缓存确保卸载干净(在低 版本 node js里面清除缓存使用的命令是 npm cache clean): npm cache verify 安装最新 版本 : npm install --save-dev @angular/cli@latest 安装/更新依赖: npm install 查看 版本 : ng -v 全局 版本 向本地 版本 靠拢 卸载当前全局 版本 : npm uninstall -
Vue.js 3 + TypeScript中,使用`computed`函数创建计算属性的方法与 JavaScript 版本 基本相同,只是需要更多的类型注解。下面是一个示例: import { defineComponent, ref, computed } from 'vue' export default defineComponent({ name: 'MyComponent', setup() { const count = ref<number>(0) const doubleCount = computed<number>(() => count.value * 2) return { count, doubleCount 在上面的示例中,我们使用了`defineComponent`函数来定义组件,并使用`ref`和`computed`函数来创建`count`和`doubleCount`两个响应式数据。需要注意的是,我们在`ref`函数和`computed`函数中都明确指定了数据类型,这是因为TypeScript需要在编译时知道变量的类型。 另外,如果你使用的是类组件语法,那么计算属性的写法也是类似的。你只需要在类中使用`@computed`装饰器来声明计算属性即可,例如: import { Component, Vue, Prop, Watch, Emit } from 'vue-property-decorator' @Component export default class MyComponent extends Vue { private count: number = 0 @computed private get doubleCount(): number { return this.count * 2 需要注意的是,如果你使用类组件语法,你需要安装`vue-class-component`和`vue-property-decorator`这两个库,并在 ts config.json中进行相应的配置。