【node 解决】---- UnhandledPromiseRejectionWarning: TypeError: Invalid host defined

【node 解决】---- UnhandledPromiseRejectionWarning: TypeError: Invalid host defined options

1. 问题描述

在使用 node 进行文件批量上传开发的时候,本地可以正常运行,但是打包后运行就报错:

javascript 复制代码
UnhandledPromiseRejectionWarning: TypeError: Invalid host defined options

at C:\snapshot\hl_upload\upload.js

2. 报错截图

3. 报错原因分析

该错误通常与动态导入或不兼容的模块使用有关。 错误源于使用了动态导入 node-fetch ,这在打包后的可执行文件中可能不被支持。需要将其改为使用 require 方式导入。

4. 修改导入

4.1 动态引入代码

ini 复制代码
let fetch;
(async () => {
  fetch = (await import('node-fetch')).default;
})();

4.2 修改后代码

ini 复制代码
const fetch = require('node-fetch').default;

5. 重新打包运行

运行可执行文件时出现了新的错误: Cannot use import statement outside a module 。这表明 node-fetch 模块内部使用了 ES 模块语法,而我们的项目是以 CommonJS 方式运行的。需要进一步修改代码,确保所有模块都以兼容方式导入。

6. 报错

javascript 复制代码
C:\snapshot\hl_upload\node_modules\node-fetch\src\index.js:9
import http from 'node:http';
^^^^^^

SyntaxError: Cannot use import statement outside a module

7. 错误图片

8. 降低 node-fetch 的版本

node-fetch 版本为 3.3.2,这是一个纯 ES 模块版本,可能与我们的 CommonJS 项目不兼容。尝试将其降级到 2.x 版本,该版本支持 CommonJS。

9. 总结

  1. 将 node-fetch 的动态导入方式改为 require 方式导入。
  2. 将 node-fetch 版本从 3.3.2 降级到 2.6.7,以确保与 CommonJS 兼容。
  3. 重新安装依赖并重新打包项目。

修改后,hl_upload.exe 文件能够正常运行,上传功能和 icon.js 文件生成均工作正常。

相关推荐
windliang1 分钟前
Claude Code 源码分析(四):Tool 工具系统-从 Schema 到真实执行
前端·ai编程·claude
10WTW0137 分钟前
Sprite-Motion-Lab:雪碧图动画编辑器
前端·css·雪碧图·spritemotionlab·10wtw01
夏天要喝冰可乐1 小时前
用 Gitee Go 搭建WorkBuddy云端定时任务
前端·ai编程
天天鸭1 小时前
5 万处中文的老项目实现国际化,如何用架构思维完成改造?
前端·javascript·架构
程序员黑豆2 小时前
鸿蒙应用开发之持久化存储解析:PersistentStorage / PersistenceV2 / preferences 选型与实战
前端·harmonyos
明月_清风2 小时前
🚀 OpenAI 数据代理架构全解析:从 600 PB 到自然语言的六层上下文工程
前端·后端·架构
明月_清风2 小时前
🚀 从 Foundry 到 AIP:Palantir 发生了什么变化?一篇文章全搞懂
前端·后端
西门啐血2 小时前
Vue 缓存之坑,变量赋值方式和响应式数据
前端·vue.js·缓存
涛涛ing2 小时前
2026 上半年,前端圈已经炸了五次
前端
hunterandroid2 小时前
Android 后台任务可靠性排查:从 WorkManager 观测到失败重试闭环
android·前端