preload.js挂载的对象,生产环境无法使用
问
为什么我在preload.js中挂载了对象,并且开发环境正常使用,但是生产环境无法使用?
答
因为你没有把sdk打包到插件里
解决方法
如果你是用的是这个目录结构:
text
|- node_modules
| |- ...sdk
|- public
| |- plugin.json
| |- preload.js
|- src
| |- main.js
| |- App.vue
|- index.html
|- package.json
|- vite.config.js
那么,你要将你使用的sdk复制到public目录下,形如:
text
|- node_modules
| |- ...sdk
|- public
| |- plugin.json
| |- preload.js
| |- node_modules
| | |- ...sdk
|- src
| |- main.js
| |- App.vue
|- index.html
|- package.json
|- vite.config.js
最终打包后,目录结构应该是
text
|- dist
| |- assets
| | |- ...
| |- index.html
| |- node_modules
| | |- ...sdk
| |- plugin.json
| |- preload.js
|- node_modules
| |- ...sdk
|- public
| |- plugin.json
| |- preload.js
| |- node_modules
| | |- ...sdk
|- src
| |- main.js
| |- App.vue
|- index.html
|- package.json
|- vite.config.js
注意事项
- 包管理器使用
yarn
或npm
,不要使用pnpm
,因为pnpm
会将node_modules
放在node_modules/.pnpm
目录下,导致打包后无法找到node_modules
预后
建议使用我的开发脚手架:vite-utools-template,这个脚手架不存在上面的问题。
我这个脚手架将前端项目和uTools相关内容分成两个目录,隔绝了相互影响,如果感觉不错,希望可以点点star,谢谢。