noty 库有一个命名的 AMD 定义define('Noty',...)
,而不是普通的匿名定义。它应该可以工作,但似乎我最近的 PR 在命名 AMD 模块上为 cli-bundler 创建了回归,或者可能在命名 AMD 模块上创建了一个新错误。
我会修复那个回归。更新我做了 https://github.com/aurelia/cli/pull/1084
现在要工作,
- 在您的项目中创建另一个
patch/noty.js
包含内容的文件:
define('noty',['Noty'],function(m){return m;});
此补丁创建从“noty”到“Noty”的别名。
- 添加到 aurelia.json 前面,必须在 requirejs 之后。
- 默认 main 存在另一个问题
lib/noty.js
:
ERROR [Bundle] Error: An error occurred while trying to read the map file at /Users/huocp/playground/nt/node_modules/noty/lib/es6-promise.map
它尝试加载 es6-promise.map 但没有这样的文件。
更新:错误不会停止捆绑。
{
"name": "vendor-bundle.js",
"prepend": [
"node_modules/requirejs/require.js",
// add this line after requirejs
"patch/noty.js"
],
"dependencies": [
"aurelia-bootstrapper",
"aurelia-loader-default",
"aurelia-pal-browser",
{
"name": "aurelia-testing",
"env": "dev"
},
"text",
// optionally override noty main path, only if you want to get rid of the annoying es6-promise.map error
{
"name": "noty",
"path": "../node_modules/noty",
"main": "lib/noty.min"
}
]
}
然后这个导入有效,我测试了。
import * as Noty from 'noty';
顺便说一句,忘记* as
,使用微软推荐的esModuleInterop
编译器选项。
https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-7.html