You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

同一份Node.js代码Windows10运行正常,Ubuntu系统报import语法错误如何解决?

问题原因
  • 核心问题是Ubuntu环境下的Node.js版本过低(v10.19.0),该版本默认采用CommonJS模块规范,不原生支持ES Module的import导入语法。Windows环境下的Node.js版本应为v12.20.0、v14.13.0或更高版本,这类版本原生支持ES Module,因此相同代码可以正常运行。
  • 代码还存在一处笔误:你定义的接口地址变量为api_url,但调用fetch时传入的是未定义的app_url,修复模块问题后需要同步修改该笔误才能正常请求接口。
排查解决方法

你可以根据自身需求选择以下任意一种方案:

方案1:升级Node.js到长期支持版本(最推荐)

旧版Node.js已经停止维护,存在安全隐患,建议升级到官方支持的LTS版本:

  • 先卸载系统自带的旧版Node.js:
sudo apt remove nodejs npm -y
  • 推荐使用nvm工具管理Node.js版本,安装完成后执行以下命令安装最新LTS版本:
nvm install --lts
nvm use --lts
  • 在项目根目录的package.json文件中添加如下配置,声明项目采用ES Module规范:
{
  "type": "module"
}
  • 修改代码中的笔误后,直接运行node demo.js即可正常启动服务。

方案2:不升级Node.js,将代码改为CommonJS规范

如果暂时无法升级Node.js,可以把ES Module语法改为旧版兼容的CommonJS写法:

  • 将开头的导入语句替换为require写法:
const express = require('express');
const fetch = require('node-fetch');
// 剩余业务代码保持不变,同步修改fetch传入的变量为api_url
  • 直接执行node demo.js即可正常运行。

方案3:临时启用Node.js实验性ESM支持

如果你只想临时验证代码,不想做上述修改,可以运行时添加实验参数启动:

node --experimental-modules demo.js

注意该功能在v10版本中是实验性质,稳定性差,不建议生产环境使用。

内容的提问来源于stack exchange,提问作者varsha kumari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 11:45:04