gpt4 book ai didi

javascript - typescript 和 sweetalert2 Uncaught ReferenceError : exports is not defined

转载 作者:行者123 更新时间:2023-12-01 01:40:16 25 4
gpt4 key购买 nike

启动了一个全新的.net core 2.0项目来开始学习,我选择使用和学习typescript。我一直在遵循此处的指南:typescript guide

这可以编译并正常工作。

然后我想利用我过去使用过的 sweetalert2,我按照这些说明 sweetalert2 进行操作。

我在 ts 文件中创建了一个简单的 helloWorld()

import swal from 'sweetalert2'

function swalHelloWorld() {
swal('hello world!');
}

它也编译在我的 www 文件夹的 js 文件中

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var sweetalert2_1 = require("sweetalert2");
function swalHelloWorld() {
sweetalert2_1.default('hello world!');
}

并包含在_layout页面上

现在,当我运行我的项目时,出现以下错误

Uncaught ReferenceError: exports is not defined at app.js:2 (anonymous) @ app.js:2

第 2 行如下

Object.defineProperty(exports, "__esModule", { value: true });

我尝试按照指南 here 进行操作纠正它,但这没有帮助

我的 tsconfig.json 是

{
"compilerOptions": {
"noImplicitAny": true,
"noEmitOnError": true,
"sourceMap": true,
"target": "es5",
"module": "commonjs",
"moduleResolution": "node"
},
"files": [
"./scripts/app.ts"
],
"exclude": [
"node_modules",
"wwwroot"
],
"compileOnSave": true
}

我不确定如何解决这个问题

网络包配置

var path = require('path');

module.exports = {
entry: {
site: [
'./Scripts/app.ts']
},
output: {
filename: 'bundle.js',
path: path.resolve(__dirname, 'wwwroot/dist/')
},
module: {
rules: [
{
test: /\.tsx?$/,
loader: 'ts-loader',
exclude: /node_modules/,
},
]
},
resolve: {
extensions: [".tsx", ".ts", ".js"]
}
};

git 仓库:https://github.com/iamthebarnsley/TSExample

最佳答案

看起来您的 HTML 页面仍在引用 app.js 。如果您想关注the guide you linked ,HTML 页面应该引用 bundle.js Webpack 生成的文件。

第二轮

如果您想调用swalHelloWorld从您的 HTML 中使用 <input id="swalalert" type="button" value="swal alert" onclick="swalHelloWorld();" /> ,那么你需要定义swalHelloWorld全局:

import swal from 'sweetalert2'

function swalHelloWorld() {
swal('hello from sweet alert');
}
(<any>window).swalHelloWorld = swalHelloWorld;

如果没有这个,Webpack 就会很聪明,并意识到无法调用 swalHelloWorld (因为它也不从模块导出)并从输出中省略它。当我进行此更改并替换 build/app.js 时与 dist/bundle.js如前所述,在 HTML 中,警报对我有用。

更新,2018-09-30

我了解了一个更干净的解决方案:添加 library Webpack 配置选项,如图 here具有您选择的名称(例如 swalHelloWorld ),这将定义一个名为 swalHelloWorld 的全局变量代表整个入口点模块。然后,如果您从模块中导出函数:

import swal from 'sweetalert2'

export function swalHelloWorld() {
swal('hello from sweet alert');
}

HTML 将能够将其称为 swalHelloWorld.swalHelloWorld(...)或类似的。

关于javascript - typescript 和 sweetalert2 Uncaught ReferenceError : exports is not defined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52484448/

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