首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Vite正在构建期间将动态导入语句转换为__import__。我能解决这个问题吗?

Vite正在构建期间将动态导入语句转换为__import__。我能解决这个问题吗?
EN

Stack Overflow用户
提问于 2021-06-12 14:32:09
回答 1查看 3.1K关注 0票数 2

我正在尝试在我现有的一个项目中使用vite。经过长时间的努力,我终于成功地使一切都在开发模式下工作。但是,当我在用vite build构建脚本之后尝试测试这个应用程序时,所有的动态导入都失败了。问题是,所有导入语句都被转换为__import__。如果我在构建的包上手动将__import__替换为import,那么一切都正常。我试着删除@vitejs/plugin-legacy,但是它仍然没有起作用。

这是我的vite.config.ts文件

代码语言:javascript
复制
import { UserConfigFn } from 'vite';
import RubyPlugin from 'vite-plugin-ruby';
import FullReload from 'vite-plugin-full-reload';
import styleLint from '@amatlash/vite-plugin-stylelint';
import eslintPlugin from 'vite-plugin-eslint';
import legacy from '@vitejs/plugin-legacy';

import { resolve as _resolve, join } from 'path';

import * as tsconfig from './tsconfig.json';

const paths = tsconfig.compilerOptions.paths;

const defaultAlias = Object.keys(paths).reduce((acc, key) => {
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
  // @ts-ignore
  const value = paths[key][0];
  const path: string = key.replace('/*', '/');
  acc.push({
    find: path,
    replacement: _resolve(__dirname, value.replace('/*', '/').replace('.//', './')) + '/',
  });
  return acc;
}, [] as any[]);

const configFn: UserConfigFn = ({ mode, command }) => {
  const plugins =
    mode === 'development' && command === 'serve'
      ? [
          styleLint({
            exclude: ['node_modules', 'public', 'plyr.css'],
          }),
          eslintPlugin({
            fix: true,
            exclude: ['node_modules', '**/legacy.js'],
          }),
          FullReload(['config/routes.rb', 'app/views/**/*']),
        ]
      : [];
  return {
    plugins: [...plugins, legacy({}), RubyPlugin()],
    css: {
      postcss: '',
    },
    resolve: {
      alias: [
        ...defaultAlias,
        {
          find: /~(.+)/,
          replacement: join(process.cwd(), 'node_modules/$1'),
        },
      ],
    },
    build: {
      sourcemap: process.env.RAILS_ENV !== 'production',
      polyfillDynamicImport: true,
      rollupOptions: {
        output: {
          manualChunks: (id) => {
            if (id.includes('node_modules')) {
              if (id.includes('jquery')) {
                return 'jquery';
              }

              if (
                /creditcards|snabbdom-form|email-validator|format-numbe|form-serialize|phone-regex|email-regex|currency-regex|format-number|snake-case|number-format|superagent/.test(
                  id
                )
              ) {
                return 'formHelpers';
              }

              if (id.includes('chart.js')) {
                return 'chartJs';
              }

              if (id.includes('moment')) {
                return 'momentJs';
              }
              if (id.includes('imagesloaded')) {
                return 'imagesLoaded';
              }

              if (id.includes('uuid')) {
                return 'uuid';
              }

              if (id.includes('flimflam')) {
                return 'flimflam';
              }

              if (/cropperjs|guillotine/.test(id)) {
                return 'imageHelpers';
              }

              if (/ff-dashboard|ff-file-uploader/.test(id)) {
                return 'ffDashboard';
              }

              return 'vendor';
            }
          },
        },
      },
    },
    clearScreen: false,
  };
};

export default configFn;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-06 14:05:40

原来是因为polyfillDynamicImporttrue.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67949809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档