Javascript 如何从项目文件夹外部导入typescript文件
所以我制作了一个小巧的typescript库,文件夹结构如下Javascript 如何从项目文件夹外部导入typescript文件,javascript,typescript,svelte,rollup,svelte-3,Javascript,Typescript,Svelte,Rollup,Svelte 3,所以我制作了一个小巧的typescript库,文件夹结构如下 |- dist/ |- src/ |- components/ |- index.ts |- tests/ |- src/ |- components/ |- index.ts |- package.json |- tsconfig.json |- rollup.config.js |- package.json |- tsconfig.json |- rollup.config.js 在tests
|- dist/
|- src/
|- components/
|- index.ts
|- tests/
|- src/
|- components/
|- index.ts
|- package.json
|- tsconfig.json
|- rollup.config.js
|- package.json
|- tsconfig.json
|- rollup.config.js
在tests
文件夹中,我有一个单独的svelte typescript项目来测试库,我正试图将tests
文件夹之外的文件直接导入tests
项目,它给了我这个错误
[!] Error: Unexpected token (Note that you need plugins to import files that are not JavaScript)
..\src\utilities\navbarStore.ts (1:12)
1: import type { NavThemes } from "src/interfaces";
^
2: import { writable } from "svelte/store";
我尝试过几种方法,比如在测试中使用路径
projecttsconfig.json
和添加rootDirs
,但仍然无法解决问题,有人知道如何解决这个问题吗?谢谢你的帮助
以下是主项目的tsconfig.json:
{
"include": ["src/**/*"],
"exclude": ["node_modules/*", "public/*", "tests/*", "docs/*", "demo/*"],
"compilerOptions": {
"baseUrl": ".",
"lib": ["es2017", "dom"],
"target": "es2017",
"module": "esnext",
"sourceMap": true,
"rootDir": ".",
"composite": true,
"noEmitOnError": true,
"noErrorTruncation": true,
"declaration": true,
"declarationMap": true,
"noEmit": false,
"strict": true,
"noImplicitThis": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"moduleResolution": "node",
"resolveJsonModule": true,
"types": ["svelte", "node"],
"allowSyntheticDefaultImports": true,
"importsNotUsedAsValues": "error",
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true,
"esModuleInterop": true
}
}
{
"include": ["src/**/*", "../src/**/*"],
"exclude": ["node_modules/*", "__sapper__/*", "public/*"],
"compilerOptions": {
"lib": ["es2017", "dom"],
"target": "es2017",
"noEmitOnError": true,
"noErrorTruncation": true,
"module": "esnext",
"moduleResolution": "node",
"resolveJsonModule": true,
"allowSyntheticDefaultImports": true,
"esModuleInterop": true,
"types": ["svelte", "node"],
"forceConsistentCasingInFileNames": true,
"noImplicitThis": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"rootDirs": [".", "../"],
"baseUrl": ".",
"paths": {
"svelteprojectts/*": ["../src/*"],
"svelteprojectjs/*": ["../dist/es/*"]
}
}
}
下面是tests
project tsconfig.json:
{
"include": ["src/**/*"],
"exclude": ["node_modules/*", "public/*", "tests/*", "docs/*", "demo/*"],
"compilerOptions": {
"baseUrl": ".",
"lib": ["es2017", "dom"],
"target": "es2017",
"module": "esnext",
"sourceMap": true,
"rootDir": ".",
"composite": true,
"noEmitOnError": true,
"noErrorTruncation": true,
"declaration": true,
"declarationMap": true,
"noEmit": false,
"strict": true,
"noImplicitThis": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"moduleResolution": "node",
"resolveJsonModule": true,
"types": ["svelte", "node"],
"allowSyntheticDefaultImports": true,
"importsNotUsedAsValues": "error",
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true,
"esModuleInterop": true
}
}
{
"include": ["src/**/*", "../src/**/*"],
"exclude": ["node_modules/*", "__sapper__/*", "public/*"],
"compilerOptions": {
"lib": ["es2017", "dom"],
"target": "es2017",
"noEmitOnError": true,
"noErrorTruncation": true,
"module": "esnext",
"moduleResolution": "node",
"resolveJsonModule": true,
"allowSyntheticDefaultImports": true,
"esModuleInterop": true,
"types": ["svelte", "node"],
"forceConsistentCasingInFileNames": true,
"noImplicitThis": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"rootDirs": [".", "../"],
"baseUrl": ".",
"paths": {
"svelteprojectts/*": ["../src/*"],
"svelteprojectjs/*": ["../dist/es/*"]
}
}
}
这听起来像是构建设置的问题。你能发布你的
package.json
和bundle-config(rollup.config.js
)吗?@dummidumm感谢你花时间回复,幸运的是我找到了另一个解决这个问题的stackoverflow问题,我想这就是我正在寻找的解决方案: