- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我尝试调整我的 Angular 应用程序以准备好进行 AOT 编译和 Tree Shaking(汇总)。但是我在使用没有默认导出的模块时遇到了问题(immutable.js,moment.js,......)。根据 typscript(查看 here),只能通过以下语句使用此类模块:import x = require('x')
或 import * as x from 'x'
但是这两个语句在汇总过程中都会导致问题。在某些情况下,我在汇总期间遇到错误:Cannot call a namespace ('x')
在某些情况下,我遇到运行时错误:x is undefined
/p>
在这里你可以找到我的 rollup-config.js 和 tsconfig-aot.json tsconfig-aot_rollup-config.zip
我需要一种在 AOT 编译和汇总期间使用 immutable.js、moment.js 等包的方法。有办法做到这一点吗?
谢谢!
最佳答案
更新
我之前的回答遇到了问题。这是我找到的解决方案,它适用于 SystemJs 和使用 AoT/rollup。
我的导入语句如下:
import * as moment from 'moment';
const momentJs = (moment as any).default ? (moment as any).default : moment;
然后,在您的代码中,像这样使用它:
const startDateString = momentJs(startDate).format('YYYY-MM-DD');
这是由于 SystemJs 和 Rollup 使用两种不同的方法来解析没有默认导出的导入模块。
我有两个 TypeScript 配置文件,一个用于 systemJs,一个用于运行 AoT 构建。它们都在 compilerOptions
"allowSyntheticDefaultImports": true
(之前的回答)
我遇到了这个确切的问题。我能够让它与以下项目一起工作:
var moment = require('moment'); //works
相对于
import moment from "moment"; // won't work
或
import moment = require('moment'); //won't work
在我的汇总配置中,我还有:
commonjs({
include: [
'node_modules/rxjs/**',
'node_modules/moment/**',
'node_modules/hammerjs/**'
]
}),
给我指明正确方向的是 this SO answer类似的问题。
上述解决方案适用于 SystemJs 和 Angular 的 AoT/Rollup 流程。感觉有点 hack-ish,因为它不是导入模块的“典型” typescript 方式,但它让我解决了这个问题。
关于带有没有默认导出的模块的 Angular AOT/Rollup(如 immutable.js、moment.js),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42267240/
以这张表为例(我们称之为BIN_TABLE): +------+------+ | A | B | +------+------+ | 0 | 0 | | 0 |
我的Rollup项目是这样的... // rollup.config.js import pkg from "./package.json"; import {getRollupServerConfi
每当我为生产而构建时,都会收到此警告。当我为生产而构建时,我在汇总输出配置中禁用了源映射。 output: [{ dir: "...", format: "...", sourcemap: isPro
1、Rollup 概述 官网地址:https://rollupjs.org/guide/en/ Rollup 是什么 我们先看看 Rollup 的作者 Rich Harr
我想使用现在可用的 vuejs3 测试版设置一个项目。我想把它编译成es模 block ,所以我不能使用webpack。 是否有可用的种子项目/指南来设置带有汇总的 vue3 以发出 es 模块包
在SQL Server中使用ROLLUP时,如何获取明细行上方的小计行? 这是您在使用 ROLLUP 时通常会得到的结果: Group Name
我在我的 repo 的某些文件中导入了一个绝对路径,并尝试将它与 rollup 捆绑在一起 我的导入,其中/api/是绝对路径: import * from '/api/myFile.js' 但是当我
我正在使用 ES6 导入并使用 Rollup 进行编译。 输出是单个捆绑文件。 可以将 Rollup 配置为生成文件对文件的转译结果吗? 这是我正在使用的当前配置,它显然会吐出一个文件。 gulp.
我对打包机和 rollup 还很陌生具体来说。在 rollup.config.js 中有条件地散列文件名的最佳方法是什么?在为生产构建时,同时保存 index.html引用新 .css和 .js散列版
我使用 group by 和 rollup 得到以下查询结果: Divison Department Section Employee Name Employee ID Hour
我有这个sql查询 Select Case When transfer.trf_type = 'c' then 'Transfer to own card' When transf
今天在这个问题上停留了一段时间,想知道有人能提出问题出在哪里吗?这是我的代码: select g.game_name, r.rental_id, sum(if(datediff(r.return_da
Mytable,其 ID 作为自动增量客户、日期和金额我想做一个汇总,将每个客户每天的金额相加我的意思是汇总按日期和客户分组我的结果应该是这样的: +---------+--------------+
我有一个 SQL 语句,它给出了工作债权人的列表。在图像中的示例中,两个债权人都属于同一份工作。所以在显示 TOTALS 的最后一行,作业数是 1,这是正确的,因为它是同一个作业。同样,表示 NotP
+----+-------+-------+ | id | style | color | +----+-------+-------+ | 1 | 1 | red | | 2 |
我正在尝试向我的 SELECT 查询中添加一些总计,但我正在努力了解为什么这不起作用: SELECT 客户,job_type,actual_value_fee FROM jo2细节 GROUP BY
下面是我正在写的查询,但由于某种原因,它在“ROLLUP”一词之后给我一个语法错误,红色的小波浪线在汇总后的“(”下面。 SELECT building, room_number, time_slot
我想将一个 .js 文件与 rollup 捆绑在一起,其中只有一个类定义。但汇总仅创建一个空的捆绑文件。当我在类定义之外添加一些代码时,这种情况会发生变化。这将创建一个空包: class MyElem
这是我的例子(mysql Ver 14.14 Distrib 5.7.21,适用于 Win64 (x86_64)) DROP TABLE IF EXISTS t_tt; CREATE TEMPORAR
当按多个字段分组时执行 WITH ROLLUP,MySQL 返回每个组的汇总行,以及总体摘要: CREATE TABLE test (name VARCHAR(50), number TINYINT)
我是一名优秀的程序员,十分优秀!