Skip to content

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

注意事项

  1. 包管理器使用 yarnnpm,不要使用 pnpm,因为 pnpm 会将 node_modules 放在 node_modules/.pnpm 目录下,导致打包后无法找到 node_modules

预后

建议使用我的开发脚手架:vite-utools-template,这个脚手架不存在上面的问题。

我这个脚手架将前端项目和uTools相关内容分成两个目录,隔绝了相互影响,如果感觉不错,希望可以点点star,谢谢。