在普通web项目中:
console.log(this.basePath); // '/menuMg'
console.log(routePath); // 'index'
console.log(path.resolve(this.basePath, routePath)); // '/menuMg/index'
在electron项目中:
console.log(this.basePath); // '/menuMg'
console.log(routePath); // 'index'
console.log(path.resolve(this.basePath, routePath)); // 'C:\menuMg\index'
解决方案:
使用node中path里的posix API。
解决代码:path.posix.resolve(this.basePath, routePath)
此时返回的结果就与普通web项目中的一样了,结果为 ‘/menuMg/index’。
拓展:关于path.posix
上面问题原因如下:
path 模块的默认操作会因 Node.js 应用程序运行所在的操作系统而异。 具体来说,当在 Windows 操作系统上运行时, path模块会假定正被使用的是 Windows 风格的路径。
path.posix 属性提供对 path 方法的 POSIX 特定实现的访问。(意思就是无视操作系统的不同,统一为 POSIX方式,这样可以确保在任何系统上结果保持一致)
详细文档请查看:POSIX