我有一个问题与导入语句在我的网站项目.尝试到使用nodejs-typescript和jquery
我的项目文件夹看起来像这样:
- 项目
- 节点模块
- 公众
- 日本
- jquery/dist(从节点模块/jquery/dist复制)
- index.html
- ts
- test.ts
- package.json
- tsconfig.json
package.json:
{
"name": "testclient",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"@types/jquery": "^3.3.4",
"jquery": "^3.3.1"
},
"devDependencies": {
"typescript": "^2.9.2"
}
}
tsconfig.json:
{
"compileOnSave": true,
"compilerOptions": {
"experimentalDecorators": true,
"sourceMap": true,
"strict": true,
"module": "ES2015",
"moduleResolution": "Classic",
"target": "ES5",
"lib": ["dom", "es5", "es2015", "es2015.promise"],
"removeComments": true,
"sourceMap": true,
"outDir": "public/js",
"allowSyntheticDefaultImports": true
},
"include": [
"ts/**/*"
],
"exclude": [
"node_modules"
]
}
index.html
<!DOCTYPE html>
<html lang="de">
<header>
<title>Test</title>
</header>
<body>
Mein Test
</body>
<script type="text/javascript" src="js/jquery/dist/jquery.min.js"></script>
<script type="text/javascript" src="js/test.js"></script>
</html>
test.ts
import $ from 'jquery';
$(document).ready(() => {
console.log('document is ready now');
console.log($);
});
如果我在我的chrome浏览器中启动index.html并打开控制台,我会得到一个错误:
未捕获的语法错误:意外的标识符test. js:1
我发现$在我叫它jquery的时候是未知的。所以我不能在我的脚本中使用jquery
不使用///<reference path=""/>
导入jquery而让它运行的最佳实践是什么?要设置哪些tsconfig参数才能让它在浏览器中运行?
2条答案
按热度按时间3z6pesqy1#
不确定我是否完全理解这个问题(它的表述有点奇怪),但我认为您正在尝试在您的索引页面中实现jquery,而不必下载和Map它,您可以通过在代码中实现它来简单地做到这一点:
第一个月
此外,您还会收到错误消息,因为您的test.js路径是错误的,它应该是错误的
<script type="text/javascript" src="../ts/test.js"></script>
如果我考虑到你的Map
7gcisfzg2#
jquery和typescript存在问题。您很可能需要下载TypeScript definition file for jQuery-
jquery.d.ts
-并将其包含在您的项目中。请确保在尝试使用jquery之前完成以下步骤:选项1:安装@types包(建议用于TS 2.0+)
在项目运行中:
然后编译器会自动解析jquery的定义。
选项2:手动下载
下载它here。
选项3:使用类型
如果您使用的是typings,那么您可以这样包含它:
设置定义文件后,将别名(
$
)导入到所需的TypeScript文件中,以便像平常一样使用它。您的意思是需要使用
--allowSyntheticDefaultImports
编译-在 tsconfig.json 中添加"allowSyntheticDefaultImports": true
。