cometlj / hexo-translate-title

使用Google翻译,百度翻译和有道翻译将Hexo文章中的汉字标题转成英文标题
https://cometlj.github.io
Other
43 stars 17 forks source link

Error Plugin Load Failed #6

Closed varpenny closed 6 years ago

varpenny commented 6 years ago

问题描述

在执行 hexo generate 时报错,无法生成 post 页面:

ERROR Plugin load failed: hexo-translate-title
/Users/Penny/Documents/workspace/project/blog/node_modules/hexo-translate-title/index.js:7
hexo.extend.filter.register('before_post_render', async function (data) {
                                                  ^^^^^
SyntaxError: missing ) after argument list
    at Object.exports.runInThisContext (vm.js:76:16)
    at /Users/Penny/Documents/workspace/project/blog/node_modules/hexo/lib/hexo/index.js:230:17
    at tryCatcher (/Users/Penny/Documents/workspace/project/blog/node_modules/bluebird/js/release/util.js:16:23)
    at Promise._settlePromiseFromHandler (/Users/Penny/Documents/workspace/project/blog/node_modules/bluebird/js/release/promise.js:512:31)
    at Promise._settlePromise (/Users/Penny/Documents/workspace/project/blog/node_modules/bluebird/js/release/promise.js:569:18)
    at Promise._settlePromise0 (/Users/Penny/Documents/workspace/project/blog/node_modules/bluebird/js/release/promise.js:614:10)
    at Promise._settlePromises (/Users/Penny/Documents/workspace/project/blog/node_modules/bluebird/js/release/promise.js:693:18)
    at Promise._fulfill (/Users/Penny/Documents/workspace/project/blog/node_modules/bluebird/js/release/promise.js:638:18)
    at Promise._resolveCallback (/Users/Penny/Documents/workspace/project/blog/node_modules/bluebird/js/release/promise.js:432:57)
    at Promise._settlePromiseFromHandler (/Users/Penny/Documents/workspace/project/blog/node_modules/bluebird/js/release/promise.js:524:17)
    at Promise._settlePromise (/Users/Penny/Documents/workspace/project/blog/node_modules/bluebird/js/release/promise.js:569:18)
    at Promise._settlePromise0 (/Users/Penny/Documents/workspace/project/blog/node_modules/bluebird/js/release/promise.js:614:10)
    at Promise._settlePromises (/Users/Penny/Documents/workspace/project/blog/node_modules/bluebird/js/release/promise.js:693:18)
    at Promise._fulfill (/Users/Penny/Documents/workspace/project/blog/node_modules/bluebird/js/release/promise.js:638:18)
    at /Users/Penny/Documents/workspace/project/blog/node_modules/bluebird/js/release/nodeback.js:42:21
    at /Users/Penny/Documents/workspace/project/blog/node_modules/graceful-fs/graceful-fs.js:78:16
    at tryToString (fs.js:425:3)
    at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:412:12)

相关配置

hexo 根目录下的 _config.yml 的相关配置:

permalink: posts/:translate_title.html
...
translate_title:
  translate_way: google
  is_need_proxy: false

环境

node: v7.0.0 package.json 依赖包:

{
  ...
  "dependencies": {
    "hexo": "^3.2.0",
    "hexo-deployer-git": "^0.3.1",
    "hexo-generator-archive": "^0.1.4",
    "hexo-generator-category": "^0.1.3",
    "hexo-generator-index": "^0.2.0",
    "hexo-generator-json-content": "^3.0.1",
    "hexo-generator-tag": "^0.2.0",
    "hexo-neat": "^1.0.4",
    "hexo-renderer-ejs": "^0.2.0",
    "hexo-renderer-marked": "^0.2.10",
    "hexo-renderer-stylus": "^0.3.1",
    "hexo-server": "^0.2.0",
    "hexo-translate-title": "^1.0.4"
  }
}
cometlj commented 6 years ago

SyntaxError: missing ) after argument list错误可能是由于转义问题造成,麻烦发下你现在的标题,看下是否有单引号等,另外请在_post文件夹下只保留一篇文章,然后运行下hexo generate试试

varpenny commented 6 years ago

@cometlj 我尝试了在 _post 目录下只保留一篇文章,且文章名称只包含英文字母 test,但运行 hexo generate 还是报同样的错误。 有没有可能是缺少了什么依赖包导致的呢?

cometlj commented 6 years ago

目前此插件只使用了一个request-promise依赖包,而且已经加入到插件的package.json文件中了,install的时候会自动安装上的。建议将node版本升级到8.xstable版本,有可能和node版本低有关系

varpenny commented 6 years ago

@cometlj 我将 Node 升级到 v8.11.2 (LTS) 之后,重新 npm install,再执行 hexo generate,原来的错误没有了,但出现另外的问题:

ERROR Plugin load failed: hexo-translate-title
Error: Cannot find module 'request'
    at Function.Module._resolveFilename (module.js:547:15)
    at Function.Module._load (module.js:474:25)
    at Module.require (module.js:596:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/Users/Penny/Documents/workspace/project/blog/node_modules/hexo-translate-title/lib/util.js:5:17)
    at Module._compile (module.js:652:30)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
    at Function.Module._load (module.js:497:3)
    at Module.require (module.js:596:17)
    at require (/Users/Penny/Documents/workspace/project/blog/node_modules/hexo/lib/hexo/index.js:219:21)
    at /Users/Penny/Documents/workspace/project/blog/node_modules/hexo-translate-title/index.js:5:12
    at fs.readFile.then.script (/Users/Penny/Documents/workspace/project/blog/node_modules/hexo/lib/hexo/index.js:232:12)
    at tryCatcher (/Users/Penny/Documents/workspace/project/blog/node_modules/bluebird/js/release/util.js:16:23)
    at Promise._settlePromiseFromHandler (/Users/Penny/Documents/workspace/project/blog/node_modules/bluebird/js/release/promise.js:512:31)
    at Promise._settlePromise (/Users/Penny/Documents/workspace/project/blog/node_modules/bluebird/js/release/promise.js:569:18)
    at Promise._settlePromise0 (/Users/Penny/Documents/workspace/project/blog/node_modules/bluebird/js/release/promise.js:614:10)
    at Promise._settlePromises (/Users/Penny/Documents/workspace/project/blog/node_modules/bluebird/js/release/promise.js:693:18)
    at Promise._fulfill (/Users/Penny/Documents/workspace/project/blog/node_modules/bluebird/js/release/promise.js:638:18)
    at Promise._resolveCallback (/Users/Penny/Documents/workspace/project/blog/node_modules/bluebird/js/release/promise.js:432:57)
    at Promise._settlePromiseFromHandler (/Users/Penny/Documents/workspace/project/blog/node_modules/bluebird/js/release/promise.js:524:17)

根据提示,手动 install 了 request 包,再执行生成命令,就 OK 了,thanks a lot~

cometlj commented 6 years ago

提醒我了,request-promise包是request包的Promise封装,所以应该将request包也加到插件的package.json依赖中,问题解决了就好