vitejs / vite

Next generation frontend tooling. It's fast!
http://vite.dev
MIT License
68.12k stars 6.14k forks source link

[vite] Internal server error: Failed to resolve import "stui-vue" from "src/markdown/get-started.md". Does the file exist? #9351

Closed ericasun closed 2 years ago

ericasun commented 2 years ago

What configuration is missing?

Describe the bug

vite upgrade 1.0.0-rc.1 to 2.5.10 Step1:yarn add vite@2.5.10 Step2:yarn dev error:

[vite] Internal server error: Failed to resolve import "stui-vue" from "src/markdown/get-started.md". Does the file exist?
  Plugin: vite:import-analysis
  File: /Users/erica/Desktop/01前端/05项目/06goal-Vue3-wheel/src/markdown/get-started.md
  1  |  
  2  |  import {Button, Tabs, Tab, Switch, Dialog, openDialog} from "stui-vue"
     |                                                               ^
  3  |  const _sfc_main = {
  4  |    components: {Button}
      at formatError (/Users/erica/Desktop/01前端/05项目/06goal-Vue3-wheel/node_modules/vite/dist/node/chunks/dep-36bf480c.js:50163:46)
      at TransformContext.error (/Users/erica/Desktop/01前端/05项目/06goal-Vue3-wheel/node_modules/vite/dist/node/chunks/dep-36bf480c.js:50159:19)
      at normalizeUrl (/Users/erica/Desktop/01前端/05项目/06goal-Vue3-wheel/node_modules/vite/dist/node/chunks/dep-36bf480c.js:75881:26)
      at async TransformContext.transform (/Users/erica/Desktop/01前端/05项目/06goal-Vue3-wheel/node_modules/vite/dist/node/chunks/dep-36bf480c.js:76016:57)
      at async Object.transform (/Users/erica/Desktop/01前端/05项目/06goal-Vue3-wheel/node_modules/vite/dist/node/chunks/dep-36bf480c.js:50373:30)
      at async transformRequest (/Users/erica/Desktop/01前端/05项目/06goal-Vue3-wheel/node_modules/vite/dist/node/chunks/dep-36bf480c.js:65414:29)
      at async viteTransformMiddleware (/Users/erica/Desktop/01前端/05项目/06goal-Vue3-wheel/node_modules/vite/dist/node/chunks/dep-36bf480c.js:65542:32)

package.json

  "scripts": {
    "dev": "vite",
    "build": "vite build"
  },
  "resolutions": {
    "node-sass": "npm:sass@1.26.11"
  },
  "dependencies": {
    "@vitejs/plugin-vue": "^1.4.0",
    "esbuild": "^0.6.0",
    "github-markdown-css": "4.0.0",
    "marked": "1.1.1",
    "prismjs": "1.21.0",
    "rollup": "^2.0.0",
    "vue": "3.0.0",
    "vue-router": "4.0.0-beta.3"
  },
  "devDependencies": {
    "@vue/compiler-sfc": "3.0.0",
    "rollup-plugin-esbuild": "2.5.0",
    "rollup-plugin-scss": "2.6.0",
    "rollup-plugin-terser": "7.0.2",
    "rollup-plugin-vue": "6.0.0-beta.10",
    "sass": "1.32.11",
    "vite": "2.5.10",
    "vite-plugin-html": "^3.2.0",
    "vite-plugin-markdown": "^2.0.2",
    "vite-plugin-vue": "^0.0.0"
  }

vite.config.ts

import { md } from "./plugins/vite-plugin-md";
import fs from 'fs'
import {baseParse} from '@vue/compiler-core'
import {defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'

export default defineConfig({
  base: './',
  assetsDir: 'assets',
  plugins: [
    md(), 
    vue({ include: [/\.vue$/, /\.md$/]}),
  ],
  vueCustomBlockTransforms: {
    demo: (options) => {
      const { path } = options
      const file = fs.readFileSync(path).toString()
      const parsed = baseParse(file).children.find(n => n.tag === 'demo')
      const title = parsed.children[0].content
      const main = file.split(parsed.loc.source).join('').trim()
      return `export default function (Component) {
        Component.__sourceCode = ${JSON.stringify(main)}
        Component.__sourceCodeTitle = ${JSON.stringify(title)}
      }`.trim()
    }
  }
});

vite-plugin-md.ts file type '.md' to '.js'

import path from 'path'
import fs from 'fs'
import marked from 'marked'

const mdToJs = str => {
  const content = JSON.stringify(marked(str))
  return `export default ${content}`
}

export function md() {
  return {
    name: 'md', 
    configureServer(){ // 用于开发
      async ({ app }) => {
        app.use(async (ctx, next) => { // koa
          if (ctx.path.endsWith('.md')) {
            ctx.type = 'js'
            const filePath = path.join(process.cwd(), ctx.path)
            ctx.body = mdToJs(fs.readFileSync(filePath).toString())
          } else {
            await next()
          }
        })
      }
    },
    transform(code, id){ // 用于 rollup // 插件
      // 获取.md文件
      const fileArr = id.split('.') //根据.分割数组
      const fileType = fileArr[fileArr.length -1]; //取最后一个
      if(fileType === 'md'){
        mdToJs(code) 
      }
    }
  }
}

What configuration is missing?

Reproduction

https://github.com/ericasun/goal-Vue3-wheel-code

System Info

System:
    OS: Mac
  Binaries:
    Node: 14.18.3  - /usr/local/bin/node
    Yarn: 1.22.10 - /usr/local/bin/yarn
    npm: 6.14.15 - /usr/local/bin/npm
  Browsers:
    chorme: 102.0.5005.115
  npmPackages:
     Vite: 1.0.0-rc.1 => 2.5.10

Used Package Manager

yarn

Logs

i try to add it to build.rollupOptions.external, but it's useless.

[vite]: Rollup failed to resolve import "stui-vue" from "src/markdown/get-started.md".
This is most likely unintended because it can break your application at runtime.
If you do want to externalize this module explicitly add it to
`build.rollupOptions.external`
error during build:
Error: [vite]: Rollup failed to resolve import "stui-vue" from "src/markdown/get-started.md".
This is most likely unintended because it can break your application at runtime.
If you do want to externalize this module explicitly add it to
`build.rollupOptions.external`
    at onRollupWarning (/Users/erica/Desktop/01前端/05项目/06goal-Vue3-wheel/node_modules/vite/dist/node/chunks/dep-36bf480c.js:51210:19)
    at onwarn (/Users/erica/Desktop/01前端/05项目/06goal-Vue3-wheel/node_modules/vite/dist/node/chunks/dep-36bf480c.js:50994:13)
    at Object.onwarn (/Users/erica/Desktop/01前端/05项目/06goal-Vue3-wheel/node_modules/rollup/dist/shared/rollup.js:23215:13)
    at ModuleLoader.handleResolveId (/Users/erica/Desktop/01前端/05项目/06goal-Vue3-wheel/node_modules/rollup/dist/shared/rollup.js:22465:26)
    at /Users/erica/Desktop/01前端/05项目/06goal-Vue3-wheel/node_modules/rollup/dist/shared/rollup.js:22426:26

Validations

sapphi-red commented 2 years ago

@ericasun Your reproduction shows 404.

ericasun commented 2 years ago

@ericasun Your reproduction shows 404.

it's ok now

sapphi-red commented 2 years ago

After upgrading Vite / plugin-vue / Vue, it worked without any errors. Closing as it is already fixed.

ericasun commented 2 years ago

After upgrading Vite / plugin-vue / Vue, it worked without any errors. Closing as it is already fixed.

I tried to upgrad just now, but... Can you tell me which version to upgrade to?

sapphi-red commented 2 years ago

Oh, sorry for that. I upgraded to vite 3.0.2, plugin-vue 3.0.1, Vue 3.2.37.

ericasun commented 2 years ago

3.0.2

Oh, sorry for that. I upgraded to vite 3.0.2, plugin-vue 3.0.1, Vue 3.2.37.

I upgraded according to your prompt, but still showed this error

What else did I miss?