有在main.js代碼:爲什麼變量在導入的文件中不可見?
var test_mysql = require('./test_mysql.js')
... //some code
before(function(){
test_mysql.preparingDB(test_mysql.SQL_query.clear_data); // or test_mysql.preparingDB(SQL_query.clear_data);
});
在test_mysql.js A碼:
var SQL_query = require('./SQL_query.js');
...//some code
exports.preparingDB = function(query){
connection.connect(function(err){
if (err){
console.error('Error connecting: ' + err.stack);
return;
}
console.log('Connected as id ' + connection.threadId);
});
console.log(query);
connection.query(query, function(err){
if (err){
console.error('Error: ' + err.stack);
throw err; /*не уверена, что оба сработают*/
}
console.log('Database preparation completed');
});
在SQL_query.js A碼:
exports.clear_data = 'SET FOREIGN_KEY_CHECKS=0; -- \
TRUNCATE TABLE `billing_payment_gateway`; -- \
TRUNCATE TABLE `fos_user`; -- \
TRUNCATE TABLE `billing_account_has_product`; -- \
TRUNCATE TABLE `billing_account`; -- \
TRUNCATE TABLE `billing_product`; -- \
SET FOREIGN_KEY_CHECKS=1;'
當我嘗試運行main.js,我收到錯誤。第一種情況是TypeError: Cannot read property 'clear_data' of undefined
。 另一種情況是ReferenceError: SQL_query is not defined
。
爲什麼?什麼問題?
P.S.好。請向我解釋一下。有人。在test_mysql.js
也需要var mysql = require('mysql');
爲什麼這個模塊在main.js
中可見?
從聲明中刪除'var'和檢查出來。使SQL_query全局爲'window.SQL_query'。檢查一下,看看它是否有效 – dvenkatsagar
有沒有其他方法可以解決這個問題?我並不想污染全局名稱空間。 – Valentina
@NirLevy給出的答案應該可以做到。 – dvenkatsagar