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

本地导入DeepL API报错:Cannot use import statement outside a module

解决浏览器控制台中使用DeepL API的模块导入错误

错误原因

你遇到的Uncaught SyntaxError: Cannot use import statement outside a module错误本质有两个核心原因:

  1. 浏览器控制台的执行环境不属于ES模块上下文,直接使用import语法会触发语法错误;
  2. deepl-node是Node.js专属的SDK,它依赖Node.js的内置模块(如http、https),浏览器环境没有这些模块支持,就算解决了导入问题也无法正常运行。

解决方案

根据你的需求,提供两种可行的解决路径:


路径一:浏览器控制台直接调用DeepL REST API(无需Node.js包)

放弃deepl-node,直接用浏览器原生的fetch调用DeepL官方REST接口,无需处理模块问题,直接在控制台执行即可。

修改后的核心代码示例:

const DEEPL_API_AUTH_KEY = "你的API密钥";
const DEFAULT_POINTS = 2;
const qAndA = [];

// 封装翻译函数
async function translateText(text, sourceLang, targetLang) {
  const response = await fetch("https://api-free.deepl.com/v2/translate", {
    method: "POST",
    headers: {
      "Authorization": `DeepL-Auth-Key ${DEEPL_API_AUTH_KEY}`,
      "Content-Type": "application/x-www-form-urlencoded"
    },
    body: new URLSearchParams({
      text: text,
      source_lang: sourceLang,
      target_lang: targetLang,
      split_sentences: "nonewlines",
      preserve_formatting: "1"
    })
  });
  const data = await response.json();
  return data.translations[0].text;
}

// 提取题目、翻译并生成GAS代码
(async function() {
  let questionId = 0;
  for (const e of document.querySelectorAll("h3")) {
    const translatedTitle = await translateText(e.innerHTML, "EN", "DE");
    qAndA.push([
      `\n\n// QUESTION ${questionId}`,
      `question${questionId} = form.addMultipleChoiceItem();`,
      `question${questionId}.setTitle("${translatedTitle}");`,
      `question${questionId}.setChoices([`
    ].join("\n"));

    // 提取并翻译选项
    const options = e.nextElementSibling.querySelectorAll("li");
    for (const [idx, opt] of Array.from(options).entries()) {
      const translatedOpt = await translateText(opt.textContent.trim(), "EN", "DE");
      qAndA[questionId] += `\n  question${questionId}.createChoice("${translatedOpt}")${idx === options.length - 1 ? "" : ","}`;
    }
    qAndA[questionId] += "\n]);";
    
    questionId++;
  }

  const gasCode = qAndA.join("");
  console.log(gasCode);
})();

注意:若使用付费版DeepL API,需将请求地址改为https://api.deepl.com/v2/translate。


路径二:改为Node.js脚本(适合批量处理)

既然已安装Node.js和deepl-node,可以将整个逻辑改为Node脚本,用cheerio解析本地HTML文件,更适合批量处理大量题目。

步骤如下:

  1. 安装依赖:
npm install deepl-node cheerio fs-extra
  1. 创建脚本文件(如generate-gas.js):
import * as deepl from "deepl-node";
import cheerio from "cheerio";
import fs from "fs-extra";

const DEEPL_API_AUTH_KEY = "你的API密钥";
const translator = new deepl.Translator(DEEPL_API_AUTH_KEY);
const DEFAULT_POINTS = 2;

async function main() {
  // 读取本地HTML文件
  const htmlContent = await fs.readFile("./本地HTML文件路径.html", "utf8");
  const $ = cheerio.load(htmlContent);
  const qAndA = [];

  let questionId = 0;
  for (const e of $("h3")) {
    const originalTitle = $(e).html();
    const translatedTitle = (await translator.translateText(originalTitle, "en", "de", {
      splitSentences: "nonewlines",
      preserveFormatting: true,
    })).text;

    qAndA.push([
      `\n\n// QUESTION ${questionId}`,
      `question${questionId} = form.addMultipleChoiceItem();`,
      `question${questionId}.setTitle("${translatedTitle}");`,
      `question${questionId}.setChoices([`
    ].join("\n"));

    // 提取并翻译选项
    const options = $(e).next("ul").find("li");
    for (const [idx, opt] of Array.from(options).entries()) {
      const originalOpt = $(opt).text().trim();
      const translatedOpt = (await translator.translateText(originalOpt, "en", "de")).text;
      qAndA[questionId] += `\n  question${questionId}.createChoice("${translatedOpt}")${idx === options.length - 1 ? "" : ","}`;
    }
    qAndA[questionId] += "\n]);";
    
    questionId++;
  }

  const gasCode = qAndA.join("");
  console.log(gasCode);
  // 可选:将结果写入本地文件
  await fs.writeFile("./gas-code-output.js", gasCode);
}

main().catch(err => console.error(err));
  1. 运行脚本:
node generate-gas.js

总结

如果只是临时处理少量题目,路径一的浏览器控制台方案最快捷;如果需要批量处理大量题目,路径二的Node.js脚本更稳定,也能规避浏览器环境的各种限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 22:10:53