如果源模块位于子目录中,Aurelia 导出的包会导致来自 SystemJS 的 404
Aurelia exported bundle causes a 404 from SystemJS if a source module was in a subdirectory
我正在通过 TypeScript / ASP.NET 核心骨架导航应用程序学习 Aurelia。在默认状态下,一切 运行 都很好。为了测试导出的生产包,我 运行 Gulp 导出任务,然后通过 Visual Studio 项目发布应用程序发布到本地文件夹,然后用来自的 wwwroot 文件夹替换发布的 wwwroot 文件夹在 "export" 文件夹中,然后从命令行使用 dotnet 到 运行 应用程序。
如果我在子目录中有任何源模块,事情就会中断。例如,我将welcome.ts/html组件文件移动到“/src/Pages”中,并将其在app.ts中的路由moduleId相应地调整为“./pages/welcome”。然后,未捆绑的应用程序仍然 运行 正常运行,但是当我尝试导出版本时,我收到 SystemJS 向 http://localhost:5000/dist/pages/welcome.js 发出的 404 请求(如您所料)。
我可以在 app-build.js 文件中看到欢迎组件的内容,导出文件夹中的 config.js 文件包含预期的文件路径,即它有 "Pages/welcome...".
我读过这个看似相似的问题:
https://github.com/aurelia/bundler/issues/131
但是将 depCache 设置为 false 对我的情况没有影响。为什么 SystemJS 试图从包外部单独加载此模块?
我能够在本地重现此错误。
假设您有一个 Windows 环境,这将是一个 区分大小写的问题 。
将 [P]ages
文件夹重命名为 [p]ages
后,捆绑版本按预期工作。
在文件系统上有一个 [P]ages/welcome.js
视图模型,但 [p]ages/welcome
已被定义为 moduleId。
- 非捆绑模式: Windows 文件系统不区分大小写,正确加载
[P]ages/welcome.js
可能会产生误导。
- 捆绑模式:
- 基于文件路径,捆绑过程嵌入
[P]ages/welcome.js
作为[P]ages/welcome
模块。
- 但是,根据路由配置,SystemJS 将在
app-build.js
. 中寻找 [p]ages/welcome
模块
我的建议是尽可能使用小写 folder/filenames。
我正在通过 TypeScript / ASP.NET 核心骨架导航应用程序学习 Aurelia。在默认状态下,一切 运行 都很好。为了测试导出的生产包,我 运行 Gulp 导出任务,然后通过 Visual Studio 项目发布应用程序发布到本地文件夹,然后用来自的 wwwroot 文件夹替换发布的 wwwroot 文件夹在 "export" 文件夹中,然后从命令行使用 dotnet 到 运行 应用程序。
如果我在子目录中有任何源模块,事情就会中断。例如,我将welcome.ts/html组件文件移动到“/src/Pages”中,并将其在app.ts中的路由moduleId相应地调整为“./pages/welcome”。然后,未捆绑的应用程序仍然 运行 正常运行,但是当我尝试导出版本时,我收到 SystemJS 向 http://localhost:5000/dist/pages/welcome.js 发出的 404 请求(如您所料)。
我可以在 app-build.js 文件中看到欢迎组件的内容,导出文件夹中的 config.js 文件包含预期的文件路径,即它有 "Pages/welcome...".
我读过这个看似相似的问题:
https://github.com/aurelia/bundler/issues/131
但是将 depCache 设置为 false 对我的情况没有影响。为什么 SystemJS 试图从包外部单独加载此模块?
我能够在本地重现此错误。 假设您有一个 Windows 环境,这将是一个 区分大小写的问题 。
将 [P]ages
文件夹重命名为 [p]ages
后,捆绑版本按预期工作。
在文件系统上有一个 [P]ages/welcome.js
视图模型,但 [p]ages/welcome
已被定义为 moduleId。
- 非捆绑模式: Windows 文件系统不区分大小写,正确加载
[P]ages/welcome.js
可能会产生误导。 - 捆绑模式:
- 基于文件路径,捆绑过程嵌入
[P]ages/welcome.js
作为[P]ages/welcome
模块。 - 但是,根据路由配置,SystemJS 将在
app-build.js
. 中寻找
[p]ages/welcome
模块 - 基于文件路径,捆绑过程嵌入
我的建议是尽可能使用小写 folder/filenames。