未捕获的语法错误:意外标识符-正在导入jquery

xqkwcwgp  于 2023-01-01  发布在  jQuery
关注(0)|答案(2)|浏览(157)

我有一个问题与导入语句在我的网站项目.尝试到使用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参数才能让它在浏览器中运行?

3z6pesqy

3z6pesqy1#

不确定我是否完全理解这个问题(它的表述有点奇怪),但我认为您正在尝试在您的索引页面中实现jquery,而不必下载和Map它,您可以通过在代码中实现它来简单地做到这一点:
第一个月
此外,您还会收到错误消息,因为您的test.js路径是错误的,它应该是错误的
<script type="text/javascript" src="../ts/test.js"></script>
如果我考虑到你的Map

7gcisfzg

7gcisfzg2#

jquery和typescript存在问题。您很可能需要下载TypeScript definition file for jQuery-jquery.d.ts-并将其包含在您的项目中。请确保在尝试使用jquery之前完成以下步骤:

选项1:安装@types包(建议用于TS 2.0+)

在项目运行中:

npm install --save-dev @types/jquery

然后编译器会自动解析jquery的定义。

选项2:手动下载

下载它here

选项3:使用类型

如果您使用的是typings,那么您可以这样包含它:

// 1. Install typings
npm install typings -g
// 2. Download jquery.d.ts (run this command in the root dir of your project)
typings install dt~jquery --global --save

设置定义文件后,将别名($)导入到所需的TypeScript文件中,以便像平常一样使用它。

import $ from "jquery";
// or
import $ = require("jquery");

您的意思是需要使用--allowSyntheticDefaultImports编译-在 tsconfig.json 中添加"allowSyntheticDefaultImports": true

相关问题