nodejs 出现jest_worker/build/idenx.js _ending;包错误信息

文章讲述了在运行项目时遇到关于Node_modules中的SyntaxError,原因是使用了Node.js不支持的类上公共字段。解决方法是将Node.js版本升级至12.4及以上,例如通过`npminstall-gn`然后选择升级到指定版本或安装最新稳定版。

错误信息

node_modules/eslint-webpack-plugin/node_modules/jest-worker/build/index.js:110
  _ending;
         ^

SyntaxError: Unexpected token ;
    at Module._compile (internal/modules/cjs/loader.js:723:23)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:3)
    at Module.require (internal/modules/cjs/loader.js:692:17)
    at require (internal/modules/cjs/helpers.js:25:18)
    at Object.<anonymous> (/home/xinfei/Desktop/python_project/RealChar/client/web/node_modules/eslint-webpack-plugin/dist/getESLint.js:9:5)
    at Module._compile (internal/modules/cjs/loader.js:778:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
npm ERR! code ELIFECYCLE
npm ERR! errno 1

问题原因

旧版本的Node不支持类上的公共字段。12. 4是第一个支持该语法的Node版本

解决问题

把 nodejs升级最新版本 或者大于12.4版本之后的 
sudo npm install -g n

sudo n stable 或者 sudo n  20.10.0
### URIError: URI malformed when accessing JSON Server REST API on localhost:3001 在使用 JSON Server 作为 REST API 模拟服务时,访问 `http://localhost:3001` 时出现 `URIError: URI malformed` 错误,通常与请求路径中含非法或未正确编码的 URI 字符有关。该错误属于 JavaScript 的原生错误类型之一,表示对 URI 进行了解码操作时遇到了格式不正确的输入,例如 `%`、`+`、`#` 等特殊字符未被正确转义[^1]。 #### 1. 检查请求路径中是否含非法 URI 字符 JSON Server 依赖 Node.js 的 `decodeURIComponent` 对请求路径进行解析。如果请求路径中含未正确编码的字符(如 `%`、`{`、`}` 等),将导致解析失败并抛出 `URIError`。例如: ```javascript decodeURIComponent('/banner%'); // 抛出 URIError: URI malformed ``` 为避免此类问题,所有含特殊字符的路径都应使用 `encodeURIComponent` 进行编码: ```javascript const path = encodeURIComponent('/banner%'); console.log(path); // 输出 %2Fbanner%25 ``` 在客户端或服务端发起请求时,确保路径参数已正确编码。 #### 2. 验证 JSON Server 的路由配置 若服务端使用了自定义路由文件(如 `routes.json`),需确保其中的路径规则未含非法字符或格式错误的 URI 模式。例如以下配置将导致解析错误: ```json { "/banner%": "/banner" } ``` 应修改为: ```json { "/banner": "/banner" } ``` 启动服务时使用以下命令: ```bash json-server db.json --routes routes.json ``` 确保路径规则与 URI 编码规范一致,避免触发 `URIError`。 #### 3. 使用中间件捕获非法 URI 请求 可在自定义服务脚本中添加中间件,捕获并处理非法 URI 请求,防止服务因未处理的异常而崩溃。例如在 `server.js` 中添加: ```javascript const jsonServer = require('json-server'); const server = jsonServer.create(); const router = jsonServer.router('db.json'); const middlewares = jsonServer.defaults(); server.use((req, res, next) => { try { decodeURIComponent(req.path); next(); } catch (e) { res.status(400).json({ error: 'Invalid URI encoding' }); } }); server.use(middlewares); server.use(router); server.listen(3001, () => { console.log('JSON Server is running on port 3001'); }); ``` 该中间件会在进入路由处理前对请求路径进行合法性校验,若发现非法编码则返回 400 错误,防止服务抛出未捕获的 `URIError`。 #### 4. 验证数据库文件格式与路由匹配 确保 `db.json` 文件中含 `/banner` 字段,并且其内容格式正确。例如: ```json { "banner": [ { "id": 1, "title": "首页横幅 1" }, { "id": 2, "title": "首页横幅 2" } ] } ``` 如果路径 `/banner%` 被错误地请求,而实际数据库中没有对应字段,JSON Server 可能尝试解析路径时抛出 `URIError`。因此,必须确保请求路径与数据库结构匹配。 #### 5. 使用代理或前端路由避免非法字符请求 在开发前端应用时,可通过配置代理或使用前端路由库(如 Vue Router、React Router)对请求进行封装,避免直接向服务端发送含非法字符的路径。例如在 `vite.config.js` 中配置代理: ```javascript export default defineConfig({ server: { proxy: { '/api': { target: 'http://localhost:3001', changeOrigin: true, rewrite: (path) => path.replace(/^\/api/, '') } } } }); ``` 前端请求 `/api/banner` 时将被代理至 `http://localhost:3001/banner`,从而避免路径中出现非法字符。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值