初次搭建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中进行相应的配置。