我在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'
}
}
这与Svelte构建期间Typescript的编译方式有关。当我只使用"import"样式导入和Svelte+Typescript。Typescript可能正在编译"import"变成"require()"由于一些内部配置错误。它也只发生在一些npm库/模块上。
来自Svelte(不是Typescript) Github的一个公认的(尽管不完美的)答案是,在同一个问题上,建议将给定的依赖项(对我来说是dotenv)安装为devDependency,而不是通常的浏览器端deep。发生这种情况的原因是sveltekit必须在内部包含一些不同的构建步骤,包括vite和rollup。显然有些东西没有正确地翻译导入,但这不是你作为前端苗条开发者应该担心的事情。
希望他们在这方面发布更多的指导,但我在"要求"中发现的一般智慧;