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

如何配置Rollup(通过Vite)与Node保持无斜杠#导入别名一致?

配置Vite支持无斜杠的#前缀模块导入

要让Vite(基于Rollup)支持import logger from '#logger'这类无斜杠的#前缀导入,同时和Node.js的package.json导入规则保持统一,你需要使用正则匹配的别名配置,而非简单的字符串匹配。

正确的Vite配置

修改你的vite.config.js,添加正则捕获式的别名规则:

import { defineConfig } from 'vite'
import { resolve } from 'path'

export default defineConfig({
  resolve: {
    alias: [
      // 匹配所有#开头的模块,捕获#后的路径部分
      {
        find: /^#(.+)/,
        replacement: resolve(__dirname, 'src/$1')
      },
      // 可选:支持直接import '#'导入src目录的入口文件(如src/index.js)
      {
        find: '#',
        replacement: resolve(__dirname, 'src')
      }
    ]
  }
})

配置说明

  • 正则^#(.+)会精准匹配#logger、#utils/format这类导入路径,把#后的部分(如logger、utils/format)拼接到src目录路径后,最终解析为src/logger、src/utils/format。
  • Vite会自动处理文件扩展名(如.js、.ts)和目录入口文件(如index.js),和Node.js的模块解析逻辑一致。

与Node.js配置对齐

你的package.json中已经配置了正确的Node.js导入规则:

"imports": {
  "#*": "./src/*"
}

这个规则会让Node.js把#logger解析为./src/logger,和Vite的配置效果完全一致,现在前后端可以统一使用import logger from '#logger'的导入格式。

为什么之前的配置无效

你之前尝试的字符串匹配(find: '#')只会精确匹配import x from '#'这种导入,无法匹配#logger这类带后缀的路径。必须使用正则捕获的方式,才能把#前缀和后续的模块路径关联起来,实现无斜杠的导入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 23:10:31