在我的Node.js项目中,我试图导入一个辅助函数模块。我收到了这个错误:
/home/Projects/my_app/helpers.js:3
var randomWeight = function(letters) {
^^^^^^^^^^^^ // <-- SyntaxError: Unexpected identifier with imported module Node.js
SyntaxError: Unexpected identifier
helpers.js:
module.exports = {
function randomWeight (letters) {
var total = letters.reduce(function (a, b) {
return a + b;
});
var r = (Math.random() * (0 - total) + total.tofixed(5));
var upto = 0;
for (var i = 0; i<=letters.length; i++) {
if ((upto + letters[i][0]) > r) {
return letters[i][1];
};
upto += letters[i][0];
};
}
/routes/index.js:
var express = require('express');
var router = express.Router();
var logic = require('../logic.js');
console.log(logic.letterSet)
我尝试了很多不同的import语句变体,导致模块被导入为空对象。从搜索SO看起来这通常是因为循环导入,但我确信我没有在我的项目中的任何其他地方导入logic.js(特别是/server.js。)我是Node的新手,所以排除故障排序喜欢在黑暗中拍摄。
编辑:
我似乎通过单独导入适当的函数解决了这个问题,例如:
exports.letterSet = letterSet;
exports.randomWeight = randomWeight;
但我不太明白为什么我不能导入整个模块。如果这看起来像一个荒谬的问题,我很抱歉,但我已经习惯了模块导入很简单的python。
答案 0 :(得分:1)
您要在modules.exports中返回一个对象{},因此您需要使用对象表示法
module.exports = {
randomWeight: function (letters) {
var total = letters.reduce(function (a, b) {
return a + b;
});
var r = (Math.random() * (0 - total) + total.tofixed(5));
var upto = 0;
for (var i = 0; i<=letters.length; i++) {
if ((upto + letters[i][0]) > r) {
return letters[i][1];
};
upto += letters[i][0];
};
}