gpt4 book ai didi

jquery - 如何防止 jquery 使用 webpack 和 typescript 导入两次?

转载 作者:搜寻专家 更新时间:2023-10-30 21:49:43 24 4
gpt4 key购买 nike

我收到这个错误

Uncaught TypeError: $(...).dialog is not a function

原因好像是因为我导入了两次jquery。我找不到解决这个问题的方法。

这是我的完整错误,它说了一些关于 Bootstrap 的内容。

PopupSelectCard.ts:44 Uncaught TypeError: $(...).dialog is not a function
at Object.PopupSelectCard (PopupSelectCard.ts:44)
at Object.defineProperty.value (Index.ts:21)
at __webpack_require__ (bootstrap 92cf533…:19)
at Object.defineProperty.value (bootstrap 92cf533…:62)
at bootstrap 92cf533…:62
PopupSelectCard @ PopupSelectCard.ts:44
Object.defineProperty.value @ Index.ts:21
__webpack_require__ @ bootstrap 92cf533…:19
Object.defineProperty.value @ bootstrap 92cf533…:62
(anonymous) @ bootstrap 92cf533…:62

这是我的 webpack.config.js

var debug = process.env.NODE_ENV !== "production";
var webpack = require('webpack');

module.exports = {
context: __dirname,//another dir +"/app"
// devtool: debug ? "inline-sourcemap" : null,

// Enable sourcemaps for debugging webpack's output.
devtool: "source-map",

entry: "./code/client/scripts/Index.ts",
output: {
path: __dirname + "/code/client/views",
filename: "scripts.min.js"
},
plugins: debug ? [] : [
new webpack.optimize.DedupePlugin(),
new webpack.optimize.OccurenceOrderPlugin(),
new webpack.optimize.UglifyJsPlugin({mangle: false, sourcemap: false}),
new webpack.IgnorePlugin(/fs/),
],
node: {
fs: 'empty',
child_process: 'empty',
},

resolve: {
// Add '.ts' and '.tsx' as resolvable extensions.
alias: {
vue: 'vue/dist/vue.esm.js'
},
extensions: [".ts", ".tsx", ".js", ".json"]
},

module: {
rules: [
// All files with a '.ts' or '.tsx' extension will be handled by 'awesome-typescript-loader'.
{ test: /\.tsx?$/, loader: "awesome-typescript-loader" },

// All output '.js' files will have any sourcemaps re-processed by 'source-map-loader'.
{ enforce: "pre", test: /\.js$/, loader: "source-map-loader" }
]
},
};

这就是我在 ts 文件中导入的方式

import * as $ from "jquery";
import 'jquery-ui';

如果我不导入 jquery,我会收到编译器错误。

Cannot find name '$'.

我该如何解决这个问题?

最佳答案

所以我必须做几件事。

首先,npm install jquery-ui 命令没有以可用的方式安装 jquery-ui。它需要编译。所以我改用了 npm install jquery-ui-dist

其次,仅导入文件是行不通的。我需要所有使用 jqueryui 的 .ts 文件中的引用路径

///<reference path="../../../../node_modules/@types/jqueryui/index.d.ts"/>
import * as $ from "jquery";
import 'jquery-ui';

第三:我将以下代码添加到我的 webpack.config.ts 文件中。

var webpack = require('webpack');

module.exports = {
...
plugins: debug ? [] : [
new webpack.ProvidePlugin({
jQuery: 'jquery',
$: 'jquery',
jquery: 'jquery'
})
],
resolve: {
alias: {
'jquery-ui': 'jquery-ui-dist/jquery-ui.js'
}
}
...
};

第四,我还添加了打字 npm install @types/jquery & npm install @types/jqueryui

我不确定是哪一部分出了问题,我在不同的版本中做了几次所有这些,直到它起作用为止。因此,如果有人想编辑我的答案以澄清每个部分,请拜访我。

关于jquery - 如何防止 jquery 使用 webpack 和 typescript 导入两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47622786/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com