我在为我的node express应用程序编写快速测试时遇到了一些问题。问题是:在我的服务器文件中,我使用es6导入来导入我的自定义类。这里有一行代码:import MyClass from 'src/myclass.js';
我的测试脚本如下所示:
npx babel-node srv/server.js
我得到的错误如下:
Syntax error: Unexpected identifier突出显示导入后的模块名称
那么为什么我首先要这么做呢?我认为测试我的web应用程序会很好,每次我需要测试它的时候都不运行代码转译器。
我已经尝试过把--实验性的--模块放在测试命令中,不幸的是它对我不起作用。我的节点版本是: 11.14
我的切入点是这样的
import MyClass form 'src/myclass.js';
var myClass = new MyClass();我的类文件如下
export default MyClass {
constructor() {
...
}
}我的babel配置
require('@babel/register')({
only: [__dirname + '/src', __dirname + '/srv'],
ignore: [__dirname + 'node_modules'],
presets: ['@babel/preset-env']
});
var presets = [
[
'@babel/preset-env',
{
'useBuiltIns': 'entry',
'corejs': 'core-js@3'
}
]
];
var plugins = [
[
'module-resolver',
{
'root': ['./src'],
'alias': {
'lance': './node_modules/lance-gg/dist'
}
}
]
];
module.express = {
presets,
plugins
};因此,我希望能够启动节点服务器来测试我的代码,而无需执行代码转换(我只会在需要应用程序的产品构建的情况下这样做)。
我不知道我怎么才能做到这一点。我会感谢任何帮助或链接到某种类型的手册。
发布于 2019-04-22 07:16:50
嗨,我不明白为什么,但是像这样重写我的babel配置,事情开始起作用了:
require('@babel/register')({
only: [__dirname + '/src', __dirname + '/srv'],
ignore: [__dirname + 'node_modules'],
presets: ['@babel/preset-env']
});
var presets = [
[
'@babel/preset-env',
{
'useBuiltIns': 'entry',
'corejs': 'core-js@3'
}
]
];
var plugins = [
[
'module-resolver',
{
'root': ['./src'],
'alias': {
'lance': './node_modules/lance-gg/dist'
}
}
]
];
module.exports = function (api) {
api.cache(false);
return {
presets,
plugins
};
};我不会接受我的回答,跳跃别人会给我更好的解释为什么我之前的配置不够好,但我把它留在这里,也许它会对某人有用。
https://stackoverflow.com/questions/55786375
复制相似问题