我正在将旧的RequireJS / CommonJS / AMD / Knockout迁移到Webpack。当我尝试编译代码时,出现错误消息:
./Scripts/pbkdf2.js中的错误 找不到模块:错误:无法解析'C:@Code \ Scripts'中的'/ Scripts / sha1'
我理解该错误,但无法使Webpack为/Scripts
依赖项解析/Scripts/sha1
目录。
相关的Webpack配置选项:
config = {
resolve: {
modules: [
path.resolve(__dirname),
"node_modules"
]
}
}
/Scripts/pbkdf2.js
文件的定义如下:
define("/Scripts/pbkdf2", ["/Scripts/sha1"], function (sha1) {
...
})
我尝试为resolve.module
添加一个path.resolve(__dirname, "Scripts")
,但这没有用。我认为这样做的话可能会起作用,然后再从/Scripts/
中删除/Scripts/sha1
部分,但我想避免遍历整个项目并更新所有这些引用。
如何让Webpack根据项目的根目录解析这些子目录?我以为path.resolve(__dirname)
是这样做的,但似乎它不是项目根目录,而是文件执行所在的目录?
答案 0 :(得分:0)
我认为我可以通过提供将resolve.alias
模块映射到适当的基本目录的/Scripts/*
来解决我的问题。我猜RequireJS试图相对解析路径,而不是使用Webpack resolve.modules
配置。
对配置的相关更改:
config = {
resolve: {
alias: {
"/Scripts": path.resolve(__dirname, "Scripts")
}
}
}
此别名与以/Scripts
开头的所有必需模块匹配,因此似乎可以像我现在期望的那样解析我的模块。