我正在使用的应用程序包含核心和模块。当我从 Vue 2 迁移到 Vue 3 时,我遇到了一个似乎无法解决的错误。在以前的版本中,每个模块都包含一个 Rollup 配置,该配置创建两个文件(components.js 和 settings.js)并将它们放置在 Roaming/installationFile/module/nameofModule 中。然后核心应用程序读取这两个文件。 rollup.config
//... imports
const plugins = [
image(),
json(),
commonjs(),
vue({
css: true, // Inject CSS in <style> tag
}),
nodeResolve({ browser: true })
]
export default [
{
input: 'src/wrapper.js',
output: {
file: 'dist/component.js',
format: 'es'
},
plugins
},
{
input: 'src/settings/Settings.vue',
output: {
file: 'dist/settings.js',
format: 'es'
},
plugins
}
];
package.json
//...
"scripts": {
"dev": "node ./dev.js",
//...
dev.js 使用 fs 将文件添加到 Roaming/installationFile/module/nameofModule 中。
迁移后: vite.config.js
export default defineConfig({
plugins: [
vue(),
AutoImport({
resolvers: [ElementPlusResolver()], // I'm using element plus for front
}),
Components({
resolvers: [ElementPlusResolver()],
}),
],
resolve: {
dedupe: ['element-plus']
},
build: {
lib: {
entry: {
component: 'src/wrapper.js',
settings: 'src/settings/Settings.vue',
},
formats: ['es'],
},
minify: false, // Disable minification
rollupOptions: {
output: {
dir: 'dist', // Directory for the output files
format: 'es',
entryFileNames: '[name].js', // Will create component.js and settings.js
},
},
},
})
我尝试使用 Rollup,但我尝试的 Vue 3 插件对我不起作用。
错误是:TypeError:无法读取 null 的属性(读取“ce”)(在我的例子中是“ce”,而不是 isCE)。
我尝试过的:
更新:从 Element Plus 切换到 Vuetify 后,组件开始部分工作。例如,v-select组件看起来很好,但是当我单击它时,我在下拉列表中看不到项目。我还遇到了 CSS 问题,我通过使用插件 vite-plugin-css-injected-by-js 解决了这个问题。我现在正在考虑是否有 Rollup.js 的 Vue 3.4 插件,这样我就可以从 Vite 切换到 Rollup。
我遇到了同样的问题,我使用@vueCli创建了一个自定义库test-ui-dev,使用了slot标签,发布到npm,在一个vite创建的项目中引用了这个自定义库,报出了同样的错误。使用npm ls查看整个项目只引用了一个vue库。没有人知道这是个什么问题?怎么导致的?