NEIAPI / nei-toolkit

NEI 接口文档管理平台配套自动化工具
https://nei.netease.com
MIT License
812 stars 123 forks source link

nei build在windows下生成jtr.js中使用相对路径错误的问题 #27

Closed klvoek closed 8 years ago

klvoek commented 8 years ago

nei build 指定--webroot --viewroot 为nei -p 不同盘符下的路径时,生成的jtr.js中 webroot、viewroot、mockTpl、mockApi 使用相对路径寻址错误。 例如:

生成后的jtr.json文件中目录解析错误如下:

/* 根目录 */
webRoot: path.join(__dirname, 'D:/neteasecode/nyx/nyx-web/src/main/webapp/'),
/* 视图目录 */
viewRoot: path.join(__dirname, 'D:/neteasecode/nyx/nyx-web/src/main/webapp/WEB-INF/ftl/h5/'),
/* 同步模块mock数据路径 */
mockTpl: path.join(__dirname, '/D:/neteasecode/nyx/nyx-web/src/main/webapp/WEB-INF/ftl/h5/mock/'),
/* 异步接口mock数据路径 */
mockApi: path.join(__dirname, '/D:/neteasecode/nyx/nyx-web/src/main/webapp/src/mock/')

使用nei server命令启动测试服务器,访问页面地址报错如下:

访问了 ----> GET /product/list Failed to lookup view "./booking/productlist.ftl" in views directory "C:\Users\h zwenjinlu\nei.11934\D:\neteasecode\nyx\nyx-web\src\main\webapp\WEB-INF\ftl\h5"

若切换工作目录,执行相同命令后

生成后的jtr.json文件中目录解析如下:

/* 根目录 */
webRoot: path.join(__dirname, '../../neteasecode/nyx/nyx-web/src/main/webapp/'),
/* 视图目录 */
viewRoot: path.join(__dirname, '../../neteasecode/nyx/nyx-web/src/main/webapp/WEB-INF/ftl/h5/'),
/* 同步模块mock数据路径 */
mockTpl: path.join(__dirname, '/../../neteasecode/nyx/nyx-web/src/main/webapp/WEB-INF/ftl/h5/mock/'),
/* 异步接口mock数据路径 */
mockApi: path.join(__dirname, '/../../neteasecode/nyx/nyx-web/src/main/webapp/src/mock/'),

再次命令 nei server 启动访问同样的页面地址打开正常。

检查代码lib/nei/webapp.js 中方法buildServerConfig ,计算webRoot 等目录值时取的是相对项目目录的相对路径。所以,建议:

  1. 要么修改代码兼容windows下指定不同盘符目录的情况
  2. 要么在文档中增加说明windows下项目目录和webroot、viewroot、mockTpl、mockApi必须为同盘符下的目录
huntbao commented 8 years ago

这块确实没测到,我看下先~

huntbao commented 8 years ago

@klvoek fixed in v0.4.7