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

如何从routen.js导入变量到main.js并解决import语法报错问题

错误原因

  • 模块规范混用:你当前routen.js使用的是Node.js默认的CommonJS模块规范(用exports.xxx导出),但导入时用了ES Module(ESM)的import语法,运行环境不兼容该语法就会抛出你遇到的Unexpected token '{'报错。
  • 未导出目标变量:你没有对变量a做任何导出声明,即使模块语法兼容也无法正常导入。
  • 额外注意:变量a的赋值是在数据库查询的异步回调中执行,导入后直接取值大概率会拿到初始的false,需要等回调执行完成后再读取才能拿到正确结果。

修复方案

方案1:沿用CommonJS规范(无需修改项目配置,适配Node.js默认环境)

  1. 先在routen.js末尾添加变量a的导出代码,建议同时导出一个获取实时值的方法(CommonJS对原始类型导出的是初始化快照,直接导出a无法拿到后续修改后的值):
// 追加到routen.js末尾
exports.a = a;
exports.getA = () => a; // 调用该方法可拿到a的最新值
  1. 把main.js中的导入语句替换为CommonJS的导入语法:
const { a, getA, login } = require('../../routen/routen.js');
// 要获取最新的a值时调用getA()即可

方案2:切换为ES Module规范(适配Node.js 14+及前端工程环境)

  1. 先确认项目根目录的package.json中存在"type": "module"配置,否则Node.js会默认按CommonJS解析文件,仍然会报语法错误。
  2. 修改routen.js的导出语法为ESM规范:
// 替换原来的变量a定义
export let a = false;
// 替换原来的exports.login导出
export const login = function(request, response){
  // 原有逻辑保持不变
}
  1. 你原来写的import {a} from '../../routen/routen.js'语句即可正常使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 08:36:07