vue 无法找到模块 的声明文件 隐式拥有 “any“ 类型‘ || ReferenceError: require is not defined

1 情况描述

从github上面拷贝了一个vue项目,然后vue版本跟我本地不一致。它是2.x 本地3.x,然后引入node_modules下面的第三方包的时候写法不同,它的写法是
const yaml = require(“js-yaml”);
然后在本地,这种写法用不了,不知道为什么。
我就用 import jsyaml from ‘js-yaml/dist/js-yaml’ ,这个时候报错 vue 无法找到模块 的声明文件 隐式拥有 “any” 类型‘

2 解决方法如下

项目根目录下运行命令
npm i --save-dev @types/js-yaml

运行命令之前,js-yaml 我是下载到node_modules 了,但是没下载到@types 下
在这里插入图片描述

这是运行命令之后,图中是 export as namespace jsyaml
在这里插入图片描述

所以用这个写法 import jsyaml from ‘js-yaml/dist/js-yaml’
运行完命令之后,就可以用了

3 @types是干嘛的

看这篇文章
https://zhuanlan.zhihu.com/p/194196536

在使用uni-app开发Vue3项目时,`ReferenceError: require is not defined` 这个错误通常是由于你试图使用Node.js的`require`函数,但当前的环境并不是Node.js环境,而是在浏览器端运行。uni-app是构建跨平台应用的框架,它的运行环境是基于Webview的,所以在Vue组件中,你不能直接使用Node.js的`require`。 解决这个问题的方法有: 1. **模块化加载**:uni-app提供了自己的模块化导入机制,如`@import`或使用`import`语法(如果你在Vue组件里),而不是尝试用`require`。 ```js // 在Vue组件中 import YourComponent from '@/components/YourComponent.vue'; ``` 2. **检查是否正确引入**:确认你在浏览器环境下的代码没有尝试导入Node.js特有的模块,如fs、child_process等。 3. **使用ES6 import替代**:如果你试图从Node.js模块导入内容,可能需要在uni-app项目中设置对应的转换规则,或者使用动态导入(`dynamic import`)。 ```js // 使用动态导入 async function getModule() { const module = await import('./yourModule.js'); // 使用模块 } ``` 4. **使用uni-app提供的环境变量**:uni-app提供了`uni.require`方法,用于在运行时动态加载模块,但这通常只适用于官方预定义的库。 相关问题: 1. uni-app中如何正确地在浏览器环境下导入模块? 2. 如何使用uni-app的`uni.require`方法? 3. 如何配置uni-app以支持在不同环境下的模块导入策略?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值