[youzan/vant]在windows中执行npm run dev , 然后访问页面会报错

2024-05-22 924 views
7

报的错误是生成的 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, '\\\\')

回答

2

这个我们修复下~

3

已在 dev 分支上修复~

2

@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}'))`;
7

@pangxie1991 一直没有解决。。

5

@pangxie1991 一直没有解决。。

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