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

如何在VS Code中运行使用ES6 import语法的JavaScript文件?

Node运行ES模块import语法报错解决方案

你不需要第一时间就把代码改成require写法,有两种成熟方案可以解决问题,优先选无代码改动的原生支持方案即可。

方案1:启用Node原生ES模块支持(最简便,推荐)

Node从14.0版本开始就稳定支持ES模块语法了,不需要改任何业务代码,只要加一行配置即可:

  • 如果项目根目录还没有package.json文件,先在终端进入项目目录执行npm init -y生成配置文件
  • 打开package.json,在顶层配置项中添加"type": "module"字段
  • 保存配置后,重新执行node 你的文件名.js运行代码,就能正常识别import/export语法了

注意:加了这个配置后,项目下所有.js后缀的文件都会被默认当作ES模块解析,如果个别文件需要用CommonJS语法,可以把后缀改成.cjs单独指定。

方案2:改写为CommonJS的require语法

如果你的项目因为旧依赖兼容等原因无法启用ES模块,再考虑修改代码:

  1. 替换导入语句:把文件顶部的import axios from 'axios'修改为const axios = require('axios')
  2. 替换导出语句:把文件底部的export default scoreService修改为module.exports = scoreService

修改完成后的完整代码如下:

const axios = require('axios')
const baseUrl = 'http://localhost:3001/api/scores'

const getAll = () => {
  const request = axios.get(baseUrl)
  return request.then(response => response.data)
}

const create = (newObject) => {
  const request = axios.post(baseUrl, newObject)
  return request.then(response => response.data)
}

const update = (id, newObject) => {
  const request = axios.put(`${baseUrl}/${id}`, newObject)
  return request.then(response => response.data)
}

const scoreService = {getAll, create, update}
module.exports = scoreService

其他文件中导入这个模块的时候,也要对应把import写法改成const scoreService = require('./你的scoreService文件路径')才能正常调用。

日常开发优先选择方案1,ES模块是TC39标准规范,和前端浏览器、现代前端框架的语法保持一致,不需要在两种模块语法之间来回切换,维护成本更低。

内容的提问来源于stack exchange,提问作者Roger Wang

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 16:48:29