rror during build: Error: terser not found. Since Vite v3, terser has become an optional dependency. You need to install it.
时间: 2023-06-27 11:03:20 浏览: 6142
这个错误是因为在你的项目中,Vite需要使用terser进行代码压缩,但是terser并没有安装。你可以通过以下命令来安装terser:
```
npm install terser -D
```
或者使用yarn:
```
yarn add terser -D
```
安装完成后,重新运行你的项目即可。
相关问题
rror: error:0308010C:digital envelope routines::unsupported at new Hash (node:internal/crypto/hash:71:19) at Object.createHash (node:crypto:133:10) at module.exports (C:\Users\戴壮\Desktop\zhongdi\xiaochengxuPC\node_modules\webpack\lib\util\crea
### 关于 Node.js 中 `digital envelope routines unsupported` 错误的解决方案
当遇到 `Error: error:0308010C:digital envelope routines::unsupported` 这类错误时,通常是因为 OpenSSL 库中的某些算法不再被支持或是版本不匹配引起的。对于 Vue 或其他基于 Webpack 构建工具链的应用程序来说,这个问题可能源于 Node.js 和 Webpack 版本间的兼容性差异。
#### 方法一:调整环境变量设置
可以通过修改环境变量来绕过该问题,在启动命令前加入特定的环境变量定义:
```bash
export NODE_OPTIONS=--openssl-legacy-provider
npm run serve
```
这种方法允许旧版应用程序继续使用较早版本的 OpenSSL 提供者[^1]。
#### 方法二:更新依赖库至最新稳定版本
确保所有开发依赖项都已更新到最新的稳定版本,特别是像 Webpack 这样的构建工具以及任何涉及加密操作的相关模块。这有助于消除由于不同组件间 API 变化而导致的问题[^2]。
#### 方法三:降级 Node.js 版本
如果项目确实无法适应更高版本的 Node.js,则可以考虑回退到之前能够正常工作的较低版本。通过 nvm(Node Version Manager)管理多个 Node.js 版本会更加方便快捷[^4]。
#### 方法四:配置 Webpack 加密选项
针对 Webpack 配置文件做出相应更改,禁用或替换掉引发冲突的具体加密方法。例如,在 webpack.config.js 文件内添加如下代码片段:
```javascript
module.exports = {
// ... other configurations ...
crypto: {
disableAllSubtleAlgorithms: true,
},
};
```
此设置可防止 Webpack 使用那些已被标记为不受支持的加密算法[^3]。
以上几种方式可以根据实际情况单独尝试或者组合运用以彻底解决问题。
RROR] [com.zt.core.exception.GlobalException.handleException:166] - handleException java.lang.RuntimeException: org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 2 org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 2 at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:96)
在使用 MyBatis 的 `selectOne()` 方法时,如果查询返回了多个结果,则会抛出 `TooManyResultsException` 异常。这是因为 `selectOne()` 的设计初衷是期望查询只返回一个结果(或空值),而当实际查询结果超过一条记录时,就会触发该异常[^1]。
### 解决方案
#### 3.1 使用 `selectList()` 替代 `selectOne()`
如果预期的查询可能返回多条记录,应该将 `selectOne()` 替换为 `selectList()` 方法。这样可以安全地处理多个结果,并且不会抛出异常。例如:
```java
List<User> users = userMapper.selectList(new QueryWrapper<User>().eq("status", 1));
```
通过这种方式,即使查询匹配到多个记录,也可以正常获取所有符合条件的数据,避免触发 `TooManyResultsException` 异常[^2]。
#### 3.2 添加唯一性限制条件
如果业务逻辑上确实需要返回单个结果,可以通过优化 SQL 查询语句或添加唯一性过滤条件来确保查询结果的唯一性。例如,可以在查询条件中加入 `LIMIT 1` 或者基于唯一索引字段进行查询:
```sql
SELECT * FROM users WHERE id = #{id} LIMIT 1;
```
这样可以确保即使表中存在重复数据,也能限制查询结果只返回一条记录,从而避免异常。
#### 3.3 数据库设计优化
在数据库设计层面,可以通过设置唯一索引来防止重复数据的插入。例如,在用户表中,如果用户名是唯一的,则可以为用户名字段添加唯一索引:
```sql
ALTER TABLE users ADD UNIQUE (username);
```
通过这种方式,可以从根本上避免查询返回多个结果的情况,从而减少因重复数据导致的异常。
#### 3.4 自定义封装查询逻辑
如果上述方法不适用,可以自定义封装查询逻辑。例如,先执行 `selectList()` 获取所有结果,然后在代码中判断是否只有一个结果:
```java
List<User> users = userMapper.selectList(new QueryWrapper<User>().eq("status", 1));
if (users.size() == 1) {
return users.get(0);
} else if (users.isEmpty()) {
return null;
} else {
throw new RuntimeException("Expected one result, but found multiple.");
}
```
这种方法允许更灵活地处理查询结果,同时避免直接抛出 `TooManyResultsException` 异常。
---
阅读全文
相关推荐
















