【问题标题】:Using express-babelify-middleware with FeathersJS将 express-babelify-middleware 与 FeathersJS 一起使用
【发布时间】:2016-12-19 14:26:33
【问题描述】:

我正在尝试使用express-babelify-middleware
使用 FeathersJS 并在浏览器控制台中显示错误:

ReferenceError: main_run 未定义

我认为这意味着 babelify 不工作或我使用不正确,因为 main_run 在我的 html 文件中 src 的全局命名空间中。
这是我使用羽毛生成的结构的设置:

public/index.html:

<!DOCTYPE html>
<html>
<head>
<title>babelify test</title>

<script src="main.js"></script>
<script>
main_run()
</script>
</head><body>
<p>Testing feathers with babelify</p>
</body></html>

public/main.js

const external_module = require('./test')

function main_run(){
external_module()
}

public/test.js

module.exports = function(){
console.log("Hello world for an external module")
}

在 src/app.js 的 .uses 中:

...

const babelify = require('express-babelify-middleware')

...

app.use(compress())
  .options('*', cors())
  .use(cors())
//the line that is not working:
.use('/main.js', babelify( path.join(app.get('public'), 'main.js') ))

  .use(favicon( path.join(app.get('public'), 'favicon.ico') ))
  .use('/', serveStatic( app.get('public') ))

当我访问 localhost:3030/main.js 时,我可以看到该文件,但这些函数看起来是在它们自己的函数中,所以我不知道如何进入该函数。

【问题讨论】:

    标签: javascript node.js express feathersjs


    【解决方案1】:

    愚蠢的问题,无法访问调用它的 html 文件中的浏览器化代码。所以 public/index.html 不能访问 main_run 除非它附加到窗口对象。有一个类似的问题
    here.
    除此之外,我的代码运行良好。
    在 main.js 中将以下代码放在底部:

    window.main_run = main_run
    

    然后在 index.html 中将 main_run() 行替换为:

    window.main_run()
    

    这会将 test.js 的内容写入控制台。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-28
      • 2016-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-24
      • 1970-01-01
      相关资源
      最近更新 更多