Для веб-приложения ASP.NET Core 2.x я бы ожидал, что это будет очень просто, как стандартный шаблон. Я явно делаю это очень неправильно.
У меня есть эта структура папок.
projectRoot
├── node_modules
│ ├── jquery
│ └── // others you'd see in node_modules
├── wwwroot
│ ├── lib
│ │ ├── jquery
│ | │ └── dist
| │ | │ └── jquery.js
│ │ └── // others copied by specific Gulp tasks from node_modules
│ ├── js
│ │ └── site.js // generated from site.ts
│ ├── css
│ └── page.html // script tag to /js/site.js
├── ts
│ └── site.ts
├── gulpfile.js
└── tsconfig.json
Теперь моя проблема в том, что в моем site.ts
мне нужно импортировать из jquery
// site.ts
import $ from "???"
Но я не могу понять путь, учитывая:
Это в конечном итоге записано в site.js
Он должен быть доступен из браузера.
Он должен быть разрешен компилятором TypeScript.
Компилятор TypeScript, похоже, использует node_modules\@types\jquery
Вот мой tsconfig.json
. Обратите внимание, что я использую задачу Gulp для компиляции моих .ts
файлов, хотя я не добавляю никаких дополнительных настроек, поэтому, кажется, что используется json
ниже.
{
"compilerOptions": {
"module": "es2015",
"baseUrl": "./wwwroot/js/", // This must be specified if "paths" is.
"paths": {
"*": [ "./node_modules/@types/*" ],
"../lib/jquery/dist/jquery.js": [ "./node_modules/jquery/dist/jquery" ] // This mapping is relative to "baseUrl"
},
"esModuleInterop": true,
"moduleResolution": "node"
}
}
Я играл с baseUrl
и paths
, чтобы заставить его работать.
Либо TypeScript разрешает его, но в браузере его путь один раз неверный - я полагаю, это потому, что Chrome не может найти путь:
import $ from "lib/jquery/dist/jquery";
Uncaught SyntaxError: Неожиданный идентификатор
Или TypeScript не разрешает и не компилирует.
Опять же, я бы предположил, что это не необычная установка.