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

如何在knitr中为JavaScript代码块的script标签添加type="module"属性?

解决knitr插入ES模块JavaScript代码的type="module"问题

方法1:直接通过代码块选项添加属性

在knitr的JavaScript代码块中,使用attr参数为生成的<script>标签指定type="module"属性:

import { MyModule } from './js/mymodule.js';

// 其他代码

生成的HTML中对应的script标签会自动带上type="module",满足ES模块的导入语法要求。

方法2:自定义钩子批量处理模块代码块

如果需要批量处理多个ES模块代码块,可以自定义一个knitr钩子,自动替换默认的script标签:

首先在R代码块中定义钩子:

knitr::knit_hooks$set(jsmodule = function(before, options, envir) {
  if (before) {
    return('<script type="module">')
  } else {
    return('</script>')
  }
})

之后在需要作为模块的JS代码块中启用这个钩子:

import { MyModule } from './js/mymodule.js';

// 其他代码

注意事项

  • 确保模块导入的路径符合ES模块规范,比如相对路径必须以./或../开头
  • 该方案仅适用于HTML输出格式,因为type="module"是HTML5的特性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 00:59:57