Error: Cannot find module ‘@/xxx‘

当在执行`tsc`后用`node`运行JS时遇到`Error: Cannot find module '@/xxx'`,原因是TypeScript不会转换配置的paths别名。解决方法包括使用`module-alias`库,在`package.json`中配置别名并入口文件引入,或者通过webpack等编译工具处理别名。参考链接提供了详细步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

执行完tsc后,用node运行js发现报错了

Error: Cannot find module '@/xxx'

原因

在tsconfig中配置了paths, 但是typescript 不会对 别名进行额外的转换

"paths": {
      "@/*": ["./src/*"]
    } 

解决

  • 使用苦 module-alias

在package.json配置跟 webpack alias 的路径指向然后在入口文件调用引用方法即可

// Aliases
"_moduleAliases": {
  "@root"      : ".", // Application's root
  "@deep"      : "src/some/very/deep/directory/or/file",
  "@my_module" : "lib/some-file.js",
  "something"  : "src/foo", // Or without @. Actually, it could be any string
}

// 在入口文件最顶端调用即可
require('module-alias/register')
  • 使用webpack 或其他编译工具

参考文档

https://juejin.cn/post/6868472838613893127

在 Node.js 中遇到 `Error: Cannot find module './utils'` 错误通常是因为模块路径不正确或者文件不存在。以下是可能的原因以及解决方案: ### 可能原因及解决方法 #### 1. 文件路径错误 如果 `./utils` 路径指定有误,Node.js 将无法找到对应的模块。 - **确认路径**:确保 `utils.js` 或者 `utils/index.js` 存在于当前脚本所在的目录下[^1]。 - 如果不在同一目录,则需调整相对路径。例如: ```javascript const utils = require('../utils'); // 上一层目录中的 utils 文件夹或文件 ``` #### 2. 文件名大小写敏感 某些操作系统(如 Linux 和 macOS)对文件名区分大小写,而 Windows 不区分。因此,在跨平台开发时可能会引发此问题。 - **检查命名一致性**:确保导入语句中的名称与实际文件名完全一致。 #### 3. 缺少默认导出 即使路径无误,也可能因为未正确定义模块内容而导致加载失败。 - **验证 exports 定义**:打开 `utils.js` 并确认其具有有效的 `module.exports` 或 `exports.xxx` 声明[^2]。 ```javascript // 正确示例 module.exports = { add: function(a, b) { return a + b; } }; // 使用方式 const utils = require('./utils'); console.log(utils.add(1, 2)); // 输出 3 ``` #### 4. Babel 配置不当影响 CommonJS 支持 当项目使用 ES6+ 特性和 Babel 进行转译时,可能出现兼容性问题。 - **检查 babel.config.json 或 .babelrc 设置**:确保启用了 `@babel/preset-env` 插件来支持 CommonJS 模块语法[^3]。 ```json { "presets": ["@babel/preset-env"] } ``` #### 5. Webpack 打包遗漏依赖项 对于基于 Webpack 构建的应用程序来说,打包过程中如果没有正确处理外部依赖关系也会报此类错。 - **优化 loader 规则**:参照引用说明完善资源匹配规则[^1]^。 ```javascript rules:[ ... {test:/\.less$/,use:['style-loader','css-loader','less-loader']}, {test:/\.(ttf|woff|woff2)$/,type:'asset/resource'} ] ``` 通过以上分析可以定位并修复大多数情况下发生的找不到本地自定义模块的情况。 ```javascript try{ let utilFuncs=require("./utils"); }catch(err){ if(err.code==='MODULE_NOT_FOUND'){ console.error('Please check the existence and path of your "./utils" file.'); }else throw err; } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值