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