为什么node.js无法找到其他打字稿反应组件



我正在用Typescript重写一些React服务器端渲染文件,我只是遇到了找到自定义组件的问题。

路径结构:

node_modules/
src/
    page/Homepage.tsx
    component/Layout.tsx
    utility/
typings/

当Node.js解析Homepage.tsx时,它可以在node_modules下找到所有模块,例如reactmemobind,但是,它无法找到我的组件Layout。我的IDE phpstorm在识别我的组件位置时没有问题,但是当我访问页面时,它给出了:

 Error: Cannot find module '../component/Layout'
    at Function.Module._resolveFilename (module.js:470:15)
    at Function.Module._load (module.js:418:25)
    at Module.require (module.js:498:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (/home/base/node/src/page/Homepage.tsx:5:1)
    at Module._compile (module.js:571:32)
    at loader (/home/base/node/node_modules/babel-register/lib/node.js:144:5)
    at Object.require.extensions.(anonymous function) [as .js] (/home/base/node/node_modules/babel-register/lib/node.js:154:7)
    at Module.load (module.js:488:32)
    at tryModuleLoad (module.js:447:12)
    at Function.Module._load (module.js:439:3)
    at Module.require (module.js:498:17)
    at require (internal/module.js:20:19)
    at /home/base/node/socket.js:90:25
    at Layer.handle [as handle_request] (/home/base/node/node_modules/express/lib/router/layer.js:95:5)
    at next (/home/base/node/node_modules/express/lib/router/route.js:131:13)

homepage.tsx:

import * as React from "react";
import memobind from 'memobind'
import {Layout} from '../component/Layout'
class Homepage extends React.Component<{},{}>{
    render(){
        return <Layout><h4>Hello!!!</h4></Layout>
    }
}
module.exports = Homepage;

layout.tsx:

import * as React from "react";
export class Layout extends React.Component<{},{}>{
    render(){
        return <div class="header">{this.props.children}</div>
    }
}

当我从脚本中删除组件Layout时,一切正常。

tsconfig.json

{
  "compilerOptions": {
    "module": "commonjs",
    "target": "es6",
    "moduleResolution": "node",
    "baseUrl": "src",
    "removeComments": true,
    "allowSyntheticDefaultImports": true,
    "noImplicitAny": false,
    "sourceMap": true,
    "jsx": "react",
    "experimentalDecorators": true,
    "noLib": false,
    "declaration": false
  },
  "exclude": [
    "node_modules"
  ]
}

我的猜测是:

layout.tsx没有编译,因为您使用"类"而不是'className'。

因此...没有生成的布局。JS(或捆绑输出中的相关代码)...

然后...

at Function.Module._resolveFilename (module.js:470:15)

基于您说的不起作用的事实,仅当您尝试使用" layout.tsx"时。假设您没有"可见"的编译错误。假设太多事情....

最新更新