Browserify无法找到本地模块

时间:2017-10-27 08:26:25

标签: javascript reactjs gruntjs browserify

我有同样的问题,但有本地组件。

那是我的树:

app
|
 - assets
  |
   - js
    |
     - app.jsx
    |
     - MainComponent.jsx 

但是当我运行命令时:

macpro:app user$ browserify assets/js/app.jsx > tesapp.js

响应错误:

  

错误:找不到模块'MainComponent'   '/用户/用户/ WebstormProjects / gowithme /应用程序/资产/ JS'

这是app.jsx文件的代码:

var React = require('react');
var ReactDOM =  require('react-dom');
var  MainComponent  = require('MainComponent');
console.log("Test",MainComponent);

2 个答案:

答案 0 :(得分:1)

这是因为您使用browserifyOptions扩展程序。默认情况下,browserify无法识别未知扩展名。将options: { transform: [['babelify', {presets: ['es2015', 'react']}]], browserifyOptions: { debug: true, extensions: ['.jsx'] } } 添加到您的grunt配置中,它可能会有所帮助:

.jsx

另外,我建议省略select * from event_schedule where event_id=? and bye_week=0 and date(convert_tz(event_date_time,'UTC','US/Pacific'))=date(convert_tz(now(), @@system_time_zone, 'US/Pacific')) 的使用。 No .jsx extension?

答案 1 :(得分:0)

当您使用.js加载本地模块(即您自己的require文件)时,需要提供相对路径:

var React = require('react');
var ReactDOM =  require('react-dom');
var  MainComponent  = require('./MainComponent'); //added ./ so now the path is relative
console.log("Test",MainComponent);

使用绝对路径(如require('fs')require('react'))时,节点将尝试加载{{1}中的本机模块(如fspath等)或模块}}

https://nodejs.org/api/modules.html#modules_modules