Javascript 正在导出的值而不是变量
我一直在尝试测试一个只输出一个数字的模块和一个增加该数字的函数:Javascript 正在导出的值而不是变量,javascript,typescript,ecmascript-6,Javascript,Typescript,Ecmascript 6,我一直在尝试测试一个只输出一个数字的模块和一个增加该数字的函数: // counter.js export var number = 0; export function increment() { number++; } 然后,我将按如下方式使用此模块: // index.js import { number, increment } from './counter'; console.log(number); increment(); console.log(number); 我正
// counter.js
export var number = 0;
export function increment() {
number++;
}
然后,我将按如下方式使用此模块:
// index.js
import { number, increment } from './counter';
console.log(number);
increment();
console.log(number);
我正在使用JSPM进行模块加载,以防这很重要。如果我运行此命令,我将获得预期的输出:
0
1
0
1
{
"compilerOptions": {
"module": "system"
}
}
但是,如果我简单地将counter.js更改为counter.ts,并让TypeScript Transfile此模块,我的输出结果是:
0
0
transpiled counter.js看起来像:
// counter.js
"use strict";
exports.number = 0;
function increment() {
exports.number++;
}
exports.increment = increment;
另外,这是我的tsconfig.json:
// tsconfig.json
{
"compilerOptions": {
"module": "commonjs",
"target": "es5",
"noImplicitAny": false,
"sourceMap": false
}
}
这是TypeScript传输此模块的错误(并导出数字的常量值,而不是变量本身)还是我在这里遗漏了什么?我有完全相同的传输输出和tsconfig.json设置,但我得到了预期的输出:
0
1
0
1
{
"compilerOptions": {
"module": "system"
}
}
我看到的唯一区别是,您在这里使用JSPM,而我没有;我只是用Node.JS(v6.2.0,TypeScript 3.8.9)运行代码
如果有帮助,tsconfig.json文档中的有效选项说明amd、commonjs、system
是一些有效的选项
我创建了工作代码的git repo
我正在调试,以防万一 我有完全相同的Transpile输出和tsconfig.json设置,但我得到了预期的输出:
0
1
0
1
{
"compilerOptions": {
"module": "system"
}
}
我看到的唯一区别是,您在这里使用JSPM,而我没有;我只是用Node.JS(v6.2.0,TypeScript 3.8.9)运行代码
如果有帮助,tsconfig.json文档中的有效选项说明amd、commonjs、system
是一些有效的选项
我创建了工作代码的git repo
我正在调试,以防万一 使用以下内容更新我的tsconfig.json为我提供了预期的输出:
0
1
0
1
{
"compilerOptions": {
"module": "system"
}
}
使用以下内容更新我的tsconfig.json为我提供了预期的输出:
0
1
0
1
{
"compilerOptions": {
"module": "system"
}
}
嗯,我刚刚试着在Node中运行这个(transpilingindex.js也是),但是我得到了相同的结果。你有没有可能通过这个测试上传你的完整项目,这样我就可以在本地试用?@christoroldfield-note-index.js被重命名为app.js非常感谢上传。我在Node中测试了它,它确实对我有效。我猜它在我之前的测试中不起作用,因为我的项目中没有包含节点的类型定义。但好消息是,我发现在tsconfig.json中将模块从commonjs更改为system解决了这个问题!我不知道为什么它会阻止它更早的工作,但至少我现在有了我的解决方案。再次感谢你的帮助!嗯,我刚刚试着在Node中运行这个(transpilingindex.js也是),但是我得到了相同的结果。你有没有可能通过这个测试上传你的完整项目,这样我就可以在本地试用?@christoroldfield-note-index.js被重命名为app.js非常感谢上传。我在Node中测试了它,它确实对我有效。我猜它在我之前的测试中不起作用,因为我的项目中没有包含节点的类型定义。但好消息是,我发现在tsconfig.json中将模块从commonjs更改为system解决了这个问题!我不知道为什么它会阻止它更早的工作,但至少我现在有了我的解决方案。再次感谢你的帮助!