typescript 未定义“require”-具有类型脚本的Sveltekit

eufgjt7s  于 2023-03-13  发布在  TypeScript
关注(0)|答案(1)|浏览(249)

我在一个Svelte项目的.ts文件中同时使用了importrequire语法,我想知道为什么会出现这个错误
未定义require
我想知道我的知识是否有漏洞,是否错过了一些简单的东西?
tsconfig.json:

{
    "compilerOptions": {
        "moduleResolution": "node",
        "module": "commonjs",
        "lib": ["dom", "es2015", "esnext"],
        "target": "es5",
        /**
            svelte-preprocess cannot figure out whether you have a value or a type, so tell TypeScript
            to enforce using \`import type\` instead of \`import\` for Types.
            */
        "importsNotUsedAsValues": "error",
        "isolatedModules": true,
        "resolveJsonModule": true,
        /**
            To have warnings/errors of the Svelte compiler at the correct position,
            enable source maps by default.
            */
        "sourceMap": true,
        "esModuleInterop": true,
        "skipLibCheck": true,
        "forceConsistentCasingInFileNames": true,
        "baseUrl": ".",
        "allowJs": true,
        "checkJs": true,
        "paths": {
            "$lib/*": ["src/lib/*"]
        }
    },
    "include": ["src/**/*.d.ts", "src/**/*.js", "src/**/*.ts", "src/**/*.svelte"]
}

sveltekit配置:

import preprocess from 'svelte-preprocess'
import ssr from '@sveltejs/adapter-static'

/** @type {import('@sveltejs/kit').Config} */
export default {
  preprocess: [
    preprocess({
      defaults: {
        style: 'postcss'
      },
      postcss: true
    })
  ],

  kit: {
    adapter: ssr(),
    target: '#svelte'
  }
}
6ie5vjzr

6ie5vjzr1#

这与在Svelte构建过程中如何发生Typescript转换有关。当我只使用“import”样式导入和Svelte+Typescript时发生过这种情况。Typescript可能是由于一些内部配置错误而将“import”转换为“require()”。这种情况也只发生在一些npm库/模块上。
安接受苗条的回答(虽然不完美)(不是Typescript)Github在相同的问题上给出了安装给定依赖项的建议(对我来说是dotenv)作为一个devDependency而不是一个普通的浏览器端dep。它对我很有效。发生这种情况的原因是svelte和sveltekit必须包含一些不同的内部构建步骤,包括vite和rollup。显然有一些东西没有“我不能正确地翻译导入文件,但这不是你作为一个前端开发人员应该担心的事情。
希望他们在这方面发布更多的指导,但我发现与“require”相关的问题和Svelte的一般智慧是将其作为一个开发依赖项来尝试。

相关问题