Vant: 在windows中执行npm run dev , 然后访问页面会报错

Created on 9 Oct 2017  ·  5Comments  ·  Source: youzan/vant

报的错误是生成的 examples-dist/entry-docs.js 文件中,文件路径分隔符只用了单个反斜线的问题。
error in ./docs/examples-dist/entry-docs.js Syntax Error: Bad character escape sequence (45:118) 43 | 'zh-CN/radio': wrapAsyncComponent(r => require.ensure([], () => r(require('E:\vue\vant**\**docs\examples-docs\zh-CN\radio.md')), 'zh-CN/radio.md')), 44 | 'zh-CN/switch': wrapAsyncComponent(r => require.ensure([], () => r(require('E:\vue\vant\docs\examples-docs\zh-CN\switch.md')), 'zh-CN/switch.md')), 45 | 'zh-CN/uploader': wrapAsyncComponent(r => require.ensure([], () => r(require('E:\vue\vant\docs\examples-docs\zh-CN\uploader.md')), 'zh-CN/uploader.md')),

主要原因在 zan-doc 包下面的 build-entry.js 文件,直接使用的 path.resolve 方法,这个方法返回的路径就是上面的 E:\vue\vant\docs\ 这种。在windows 下应该要再把这个路径转成两个反斜线分隔。

docs.push(`'${lang}/${name}': wrapAsyncComponent(r => require.ensure([], () => r(require('${path.resolve(src, docPath)}')), '${lang}/${name}.md'))`);

中间那部分可以修改为:

path.resolve(src, docPath).replace(/\\/g, '\\\\')
🐞 bug

Most helpful comment

@pangxie1991 最新的dev好像又出现问题了,我在windows下,会出现\packages\uploader

而\u 在win下是无法解析的;

build-entry.js

// line 82 再加上.replace(/\\/g, '\\\\')就好了
return `'${name}': wrapper(r => require.ensure([], () => r(require('${path.relative(join('docs/src'), fullPath).replace(/\\/g, '\\\\')}')), '${name}'))`;

All 5 comments

这个我们修复下~

已在 dev 分支上修复~

@pangxie1991 最新的dev好像又出现问题了,我在windows下,会出现\packages\uploader

而\u 在win下是无法解析的;

build-entry.js

// line 82 再加上.replace(/\\/g, '\\\\')就好了
return `'${name}': wrapper(r => require.ensure([], () => r(require('${path.relative(join('docs/src'), fullPath).replace(/\\/g, '\\\\')}')), '${name}'))`;

@pangxie1991 一直没有解决。。

@pangxie1991 一直没有解决。。

其实在82行换成replace(/\/, '/')也许 因为反斜杠是转义符 换成正斜杠就好咯

Was this page helpful?
0 / 5 - 0 ratings