- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经使用 Typescript 创建了自己的函数库。此库的组件之一是导出函数的 Aircraft.ts:
export function SimulateAircraft(dt: number, s0: IAircraftState, phi_cmd: number): IAircraftState
然后使用 Webpack、ts-loader 和 dts-bundle 将它们打包成一个 .js 文件和一个 .d.ts 文件。 index.ts 简单地重新导出所有组件:
export * from './components/Aircraft'
该库未部署到 npm,但我已使用 npm link
使其在我的本地开发环境中可用。
然后我将库中的函数导入到另一个 Typescript 项目中。
import { IAircraftState, SimulateAircraft } from 'oset';
我使用函数的地方如下:
setInterval(() => {
const ac = SimulateAircraft(0.1, this.state.ac, 0);
this.setState({ ac });
}, 100);
项目构建没有任何错误。 VSCode 也没有向我显示任何错误,并且智能感知正确显示了导入的函数定义。但是在运行时,我在浏览器控制台中收到以下错误:
Uncaught TypeError: Object(...) is not a function
错误所指的对象是似乎未定义的 SimulateAircraft
。我已经搜索了很长时间以尝试找到解决方案。我发现了类似的错误及其解决方案,但我还没有找到解决我的问题的解决方案。非常感谢您的帮助。
webpack.config.js
const webpack = require('webpack');
const UglifyJsPlugin = require('uglifyjs-webpack-plugin')
const path = require('path');
const libraryName = 'oset';
module.exports = {
mode: "development",
devtool: 'inline-source-map',
entry: './src/index.ts',
output: {
filename: 'oset.js',
path: path.resolve(__dirname, 'dist')
},
resolve: {
extensions: ['.ts', '.tsx', '.js']
},
optimization: {
minimizer: [
new UglifyJsPlugin({
sourceMap: true
})
]
},
module: {
rules: [{
test: /\.tsx?$/,
loader: 'ts-loader',
exclude: [/node_modules/, /coverage/]
}]
},
plugins: [
new DtsBundlePlugin()
]
};
function DtsBundlePlugin() { }
DtsBundlePlugin.prototype.apply = function (compiler) {
compiler.plugin('done', function () {
var dts = require('dts-bundle');
dts.bundle({
name: 'oset',
main: 'dist/index.d.ts',
out: 'oset.d.ts',
removeSource: true,
outputAsModuleFolder: true // to use npm in-package typings
});
});
};
package.json
{
"name": "oset",
"version": "0.0.0",
"description": "...",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
"scripts": {
"build": "webpack",
"clean": "rm -rf dist",
"coverage": "npm test -- --coverage",
"test": "jest --watch"
},
"repository": {
"type": "git",
"url": "..."
},
"devDependencies": {
"@types/jest": "^23.3.1",
"dts-bundle": "^0.7.3",
"jest": "^23.5.0",
"ts-jest": "^23.1.4",
"typescript": "^3.0.3"
},
"dependencies": {
"redux": "^4.0.0"
},
"jest": {
"testEnvironment": "node",
"collectCoverageFrom": [
"<rootDir>/src/*/**.{ts,tsx}"
],
"transform": {
"^.+\\.tsx?$": "ts-jest"
},
"testRegex": "(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$",
"moduleFileExtensions": [
"ts",
"tsx",
"js",
"jsx",
"json",
"node"
],
"verbose": true,
"testURL": "http://localhost/"
}
}
最佳答案
可能为时已晚,但请尝试:
import * as aircraft from 'oset';
然后:
setInterval(() => {
const ac = aircraft.SimulateAircraft(0.1, this.state.ac, 0);
this.setState({ ac });
}, 100);
关于webpack - typescript ,Webpack : Uncaught TypeError: Object(. ..) 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52229592/
你好我是 Angular JS 的初学者,当我开始创建模块和 Controller 时,我无法打印我的消息,下面是我的代码 var myModule = angular.module("myFirst
我对 JQuery 还是个新手,我正在尝试使用它遍历 JSON 数组并使用数组中的数据更新我的网页。 JSON 文件如下所示: [ { "firstname":"John",
我正在使用 AngularJS 1.3.5,我正在尝试从 json 文件中获取信息。这是我的代码:HTML 文件: {{da
我正在创建 Bootstrap 模板。我收到两个错误,我不知道自己做错了什么。当我搜索类似的问题时,似乎是脚本错乱了,但我认为它们的位置是正确的。 两个错误: 未捕获的 ReferenceError:
我试图用子菜单制作导航栏,但我一直收到 dropMenu 未定义,当我将鼠标悬停在两个巴黎链接上时,我收到 Uncaught TypeError: Cannot read property 'styl
我正在尝试在名为 UserComponent 的 Angular 组件上运行 karma 测试。在此组件中,我有一个 ngOnInit 执行此操作: ngOnInit() { const
当我启用 login.spec.ts 测试时,对于不同的测试,我总是随机收到此错误。未捕获错误:未捕获( promise ):错误:无法匹配任何路由。 URL 段:“注销” 我尝试使用以下方法伪造 a
自从我设置一个与 Angular 一起运行的网络应用程序以来已经有一段时间了。我正在通过一个旧项目回顾我的步骤(尝试在我正在做的页面上实现一个 Controller ,确保 Controller 文件
在 AWS Elastic Beanstalk 上部署应用程序后会发生此错误。构建和部署成功,所有模块都正常工作,除了一个显示上述 super 表达式错误的模块。一切似乎都在本地机器上正常工作,甚至可
我刚刚开始使用 Node.js 并尝试使用模块。我已经安装了 Node 和 npm,并确保一切顺利。我将在下面添加代码来向您展示我得到了什么。 我有两个 js 文件,它们在这里。 app.js: va
在 Android 4.4.2 KitKat (API 19) 模拟器上运行时,我的代码出现问题... 当我在 Android 4.3 (API 18) 模拟器上模拟我的项目时,它正常工作并使用 Ma
function more(){ var MoreDetails = document.getElementById('MoreDetails'); More
我正在练习 Javascript,并且有以下代码,该代码在 sets[i][j] = initial_sets [i ][j]; 行。这个想法似乎是正确的,但我不明白为什么会出现错误。 var set
$(document).ready(function(){ $('#name').val('Name1'); }); function clickMe(){ console.lo
我正在创建一个网络应用程序,但我遇到了一个无法解决的简单问题。我已将产生问题的代码放在这里:http://jsfiddle.net/rkumarnirmal/5w3FG/ 应该显示此答案的第二个ale
我正在执行一项长时间运行的任务,在中间的某个位置,可能会抛出此异常: Uncaught DOMException: Blocked a frame with origin "http://localh
我试图通过使用 HTML5 中的 onEnded 属性一首接一首地播放 3 首歌曲。这是我的第一次尝试,但出现错误。 错误: Uncaught ReferenceError: src is not d
检查 Fiddle 以查看发生的故障。 当我将数据(即使我将其留空)添加到文本框并尝试单击“添加”时,它没有执行任何操作。 打开 Chrome 和 Firefox 控制台都给我同样的错误,它说“cha
这个问题在这里已经有了答案: How to access the correct `this` inside a callback (13 个回答) 关闭5年前。 您好,这是我的(快捷方式)示例代码:
我正在处理一个项目,每次 Node 运行我的代码时,浏览器控制台都会给我这个: Uncaught TypeError: Failed to resolve module specifier "expr
我是一名优秀的程序员,十分优秀!