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

从RequireJS迁移至Webpack遇报错:无法解析'app'模块

解决Webpack迁移中Module not found: Can't resolve 'app'的问题

你遇到的这个问题,核心是Webpack和RequireJS在模块解析逻辑上的差异:在RequireJS里你可以直接用'app'这种裸模块名引用项目内的自定义脚本,但Webpack默认只会去node_modules目录查找这类裸模块名,不会自动识别你项目里的本地文件,所以需要调整Webpack的配置来告诉它'app'对应哪个文件。

这里有两种可行的解决方案:

方案一:配置resolve.alias(推荐)

直接在Webpack配置的resolve.alias里给'app'指定实际的文件路径,这样Webpack就能精准定位到你的app.js:

const path = require('path');
const webpack = require('webpack');

module.exports = {
  // ...其他配置
  resolve: {
    modules: [ "node_modules", path.resolve(__dirname, 'node_modules') ],
    alias: {
      'handlebars': '../../node_modules/handlebars/dist/handlebars',
      'app': path.resolve(__dirname, './app/scripts/app.js') // 新增这一行
    },
    extensions: ['.js']
  },
  // ...其他配置
};

方案二:扩展resolve.modules搜索目录

把你的脚本目录加入Webpack的模块搜索路径,这样Webpack会在这个目录里查找名为app的文件(也就是app.js):

const path = require('path');
const webpack = require('webpack');

module.exports = {
  // ...其他配置
  resolve: {
    modules: [ 
      "node_modules", 
      path.resolve(__dirname, 'node_modules'),
      path.resolve(__dirname, './app/scripts') // 新增这一行
    ],
    alias: {
      'handlebars': '../../node_modules/handlebars/dist/handlebars'
    },
    extensions: ['.js']
  },
  // ...其他配置
};

这种方式适合你的项目里有很多自定义模块都在app/scripts目录下,不用逐个添加别名。

另外补充个小建议:你当前的entry里同时把app.js和public-views.js作为入口,其实Webpack会自动分析依赖树,只把app.js作为入口就足够了——因为public-views.js依赖app.js,Webpack会自动把它打包进去,这样能避免重复打包的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:23:19