我正在尝试建立一个基本的模块化程序,但是我似乎遇到了导入模块的问题。我尝试导入我的自定义模块,我收到以下错误:
(function (exports, require, module, __filename, __dirname) { import testStep from 'testStep';
^^^^^^
SyntaxError: Unexpected token import
导致问题的代码:
testcase.js
import testStep from 'testStep';
testStep.hello();
testStep.js
var testStep = {
hello: hello,
};
var hello = () => {
console.log('hello world');
};
export default {testStep};
的package.json
{
"name": "rebuild-poc",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"devDependencies": {
"babel-polyfill": "^6.23.0",
"babel-preset-env": "^1.6.0"
},
"dependencies": {}
}
.babelrc
{
"presets": [
"env"
]
}
我已经尝试过其他一些修补程序,例如将testStep
设置为类,以及使用require('./testStep.js')
,但这些修复程序似乎都没有用。
我是否在babel或我的某个文件中设置了错误的内容?
***修改:我正在使用testCase.js
运行node testCase.js
。
答案 0 :(得分:5)
请安装babel-cli
并使用以下网址致电您的文件:./node_modules/.bin/babel-node testcase.js
它会失败。现在我们必须修复你的代码。
testStep.js应如下所示:
var hello = () => {
console.log('hello world');
};
var testStep = {
hello: hello,
};
export default testStep;
然后,它会起作用。 ;)
https://babeljs.io/的第一个介绍是,您应该安装babel-cli
和babel-preset-env
。 ;)
您也可以像这样编写testStep.js:
var testStep = {
hello: hello,
};
function hello () {
console.log('hello world');
};
export default testStep;
这样可以保持升降。就像Jacob在他的第一点所说的那样。
答案 1 :(得分:2)
来自babel 6发行说明:
插件预设
$ npm install --save-dev babel-preset-env
保存.babelrc文件
{
presets: ["env"]
}
答案 2 :(得分:0)
您需要使用hello
使用function
定义var
,而不是function hoisting
,因此在声明testStep
时,{{ 1}}未定义。
如果您想使用es模块,可以使用hello
或babel-register
。
在您的代码中,节点无法处理es模块。
<强>巴别注册强>
使用bebel-register,所有模块将在导入时由babel处理。
首先,babel-node
或yarn add babel-register babel-cli --dev
然后创建一个条目文件:
npm install babel-register
babel-cli -dev
在您的测试用例中,您现在可以使用es模块。
编辑你的package.json:
// entry.js
require('babel-register')
require('testcase')
您可以在终端中运行"scripts": {
"test": "node entry.js"
},
或yarn test
。
您不需要npm run test
,即浏览器,而不是节点。