每个JS文件都会抛出错误,直到它被打开并保存在Azure上
Every JS file throws error until it's opened and saved on Azure
我正在部署一个节点应用到Azure,使用本地git部署。我让它在登台环境(也在Azure上)正常工作,现在我正在设置一个生产环境。
应用程序中涉及的每个文件都会抛出一个错误-但是一旦我在FTP客户端中打开该文件并保存它,不做任何更改,该特定文件的错误就会消失-并且下一个使用的文件会抛出一个错误。
所以我采取的步骤是这样的:
运行部署,刷新浏览器。
获取Unexpected token ILLEGAL on server.js line 1
保存server.js
到FTP客户端,不做任何修改。
重启app,刷新浏览器
server.js
现在没有问题,但它需要的第一个文件,表达,在node_modules/express/index.js:11
上给出错误cannot find module ./lib/express
(./lib/express
肯定存在)
在FTP客户端中保存node_modules/express/index.js:11
,不做任何更改。
重启app,刷新浏览器
现在,node_modules/express/index.js
没有问题,但是它需要的第一个文件,./lib/express
会给出一个错误:cannot find module merge-descriptors
on node_modules/lib/express.js:16
我会停在这里,但在现实生活中我继续,行为一直在进行-每个文件在它试图要求的第一件事上出错,直到它被保存在FTP客户端。
最重要的是,我让应用程序保持不变20分钟,回来后,我又回到了开始-尽管没有更改我的代码,但我还是使用Unexpected token ILLEGAL on server.js line 1
。我试着保存每个文件,基本上只是重复上面的步骤,得到相同的结果。
我完全卡住了,不知道下一步该做什么,除非在代码库中保存每个文件。知道这里可能发生什么,或者我如何继续调试这个问题吗?
你很可能在你的文件开头有一个字节顺序标记。
Domenic Denicola给出了一个简单的要点,告诉你如何检测和删除当前目录下的所有文件:
var fs = require("fs");
var path = require("path");
var wrench = require("wrench");
var BOM_CHAR_CODE = 65279;
var BOM = String.fromCharCode(BOM_CHAR_CODE);
var fileNames = wrench.readdirSyncRecursive(process.cwd()).filter(function (fileName) {
return path.extname(fileName) === ".js";
});
fileNames.forEach(function (fileName) {
fs.readFile(fileName, "utf8", function (err, fileContents) {
if (err) { throw err; }
if (fileContents.charCodeAt(0) !== BOM_CHAR_CODE) {
fs.writeFile(fileName, BOM + fileContents, "utf8", function (err) {
if (err) { throw err; }
});
}
});
});
在与Azure支持联系后,发现问题是由于WEBSITE_DYNAMIC_CACHE
被设置为1,而不是0。该功能在azure门户中不可见,并且"正在开发中,目前处于私有预览阶段"。我遇到的问题是WEBSITE_DYNAMIC_CACHE
和节点应用程序的一个已知错误。
我们仍然不确定它最初是如何/为什么被设置为1的,但它是固定的,所以我们现在不关心。
多么有趣的一天!
- 如何将getJson的响应保存在全局变量中
- 按下按钮时保存cookie
- 如何使用 Angular JS 将数据保存在数据库中
- 子字符串/正则表达式以获取字符串中保存的 SRC 值
- HTML5在画布中加载较小的图像并保存实际大小的图像
- 是否可以在浏览器中使用纯JavaScript保存音频流
- 如何将多个画布保存为一个图像
- PHP:显示sqlite数据库中的html格式数据,使用tinymce保存
- 如何将乳胶配方奶粉图像保存到Asp.net中的文件夹中
- 保存数组javascript
- 保存串行端口列表与流星
- 将JavaScript变量保存到Rails模型
- Java脚本将URL转换为已保存的URL时出错
- 如何自动保存动态生成的HTML SVG元素
- Javascript/jQuery压缩一个图像正确的评论帖子,并使用Ajax Laravel 5.2保存到控制器中
- Windows Azure通知中心错误
- 将JQuery Handontable保存到服务器上的excel文件中
- NodeJS expressJS使用multer和passport将文件上传并保存到MongoDB
- 将数据保存到数据库(ajax/php)后,使文本字段变灰/禁用
- 以可在 Azure 移动服务 (Javascript) 中查询的方式保存日期时间