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

ESLint/Prettier配置npm包导入报错:无法找到'~'包

问题描述

我开发了一个包含Prettier、ESLint、tsconfig配置的npm模块,将其安装到测试项目后,执行pnpm lint命令时出现以下错误:

Oops! Something went wrong! :(

ESLint: 9.4.0

Error [ERR_MODULE_NOT_FOUND]: Cannot find package '~' imported from C:\Users\Utilisateur\Workspace\boilerplate-node\node_modules\.pnpm\@seyrinian+seyrinian-tools@1.0.10\node_modules\@seyrinian\seyrinian-tools\dist\index.js
    at packageResolve (node:internal/modules/esm/resolve:854:9)
    at moduleResolve (node:internal/modules/esm/resolve:927:18)
    at defaultResolve (node:internal/modules/esm/resolve:1157:11)
    at ModuleLoader.defaultResolve (node:internal/modules/esm/loader:383:12)
    at ModuleLoader.resolve (node:internal/modules/esm/loader:352:25)
    at ModuleLoader.getModuleJob (node:internal/modules/esm/loader:227:38)
    at ModuleWrap.<anonymous> (node:internal/modules/esm/module_job:87:39)
    at link (node:internal/modules/esm/module_job:86:36)
 ELIFECYCLE  Command failed with exit code 2.

错误指向工具包经TypeScript构建生成的dist/index.js文件,无法解析'~'这个导入路径。

原因分析

'~'是常见的TypeScript路径别名(通常在tsconfig.json的compilerOptions.paths中配置),但Node.js本身不识别这类自定义路径别名。如果工具包的构建流程没有将别名替换为实际的相对路径,就会导致Node.js/ESLint无法找到对应模块。

解决方案
  1. 检查工具包的TypeScript配置

    • 确认tsconfig.json的compilerOptions.paths中是否有"~/*": ["src/*"]这类别名配置,确保映射关系正确。
    • 注意:TypeScript的tsc编译器本身不会自动替换路径别名,需要额外工具处理。
  2. 修复构建流程,替换路径别名
    根据你使用的构建工具选择对应方案:

    • 使用tsc + tsc-alias:
      安装依赖:
      pnpm add -D tsc-alias
      
      修改package.json的构建脚本:
      "scripts": {
        "build": "tsc && tsc-alias"
      }
      
    • 使用tsup:
      在tsup.config.ts中启用tsconfigPaths插件:
      import { defineConfig } from 'tsup';
      
      export default defineConfig({
        // 其他配置
        tsconfig: 'tsconfig.json',
        plugins: [require('tsup-plugin-tsconfig-paths')()]
      });
      
    • 使用Rollup:
      安装@rollup/plugin-alias:
      pnpm add -D @rollup/plugin-alias
      
      在Rollup配置中添加别名映射:
      import alias from '@rollup/plugin-alias';
      
      export default {
        // 其他配置
        plugins: [
          alias({
            entries: [{ find: '~', replacement: './src' }]
          })
        ]
      };
      
  3. 验证构建结果
    执行构建命令后,查看dist/index.js文件,确认所有import '~/*'的语句都被替换为相对路径(比如import './utils/xxx.js')。

  4. 重新发布并更新依赖
    重新发布工具包的新版本,在测试项目中执行pnpm update @seyrinian/seyrinian-tools,然后再次运行pnpm lint验证问题是否解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 10:41:14